java Io流学习归纳

- 固定套路:1. 创建IO流对象 2. 读写文件 3. 关闭流

- 固定的API方法:

java 复制代码
//读:read():
/*读一个字节/字符*/
  int  read()    

  /*读一个字节/字符数组*/  
  int  read(byte[] buf)
  int  read(char[] cbuf)    
 
 
  //写:write():
  /*写一个字节/字符*/
  write(int data) 
   
  /*写一个字节/字符数组*/
  write(byte[] buf , int index , int len)
  write(char[] buf , int index , int len)   
 
  write(String s)  // 写字符串(针对字符流)
      
  
  close()   //关闭流 
      
  
  flush()     //针对字符流、缓冲流

- 基础流:

java 复制代码
  /*字节流 : 读写任意类型的文件*/
  FileInputStream fis = new FileInputStream(关联文件对象)
  FileOutputStream fos = new FileOutputStream("关联文件")    
  FileOutputStream fos = new FileOutputStream("关联文件", true)//追加写入
      
  /*字符流 : 针对纯文本文件进行读写*/
  FileReader  fr = new FileReader("关联文件")
  FileWriter fw  = new FileWriter("关联文件")    
  FileWriter fw  = new FileWriter("关联文件",true) //追加写入       

- 缓冲流(高效流):自身不具备读写能力,要依赖基础流(特点:提高读写效率)

java 复制代码
  /*字节缓冲流*/
  BufferedInputStream bis = new BufferedInputStream( FileInputStream对象(转换流也行) )
  BufferedOutputStream bos = new BufferedOutputStream( FileOutputStream对象 (转换流也行))   
 
 
  /*字符缓冲流*/
  BufferedReader br = new BufferedReader( FileReader对象 )
  BufferedWriter bw = new BufferedWriter( FileWriter对象 )  

  /*读一行(特有)*/
 String s1 = br.readLine()

 /*写一空行(特有)*/
 bw.newLine()

- 转换流:自身不具备读写能力,要依赖基础流(特点:针对特有编码表的文件进行读写)

java 复制代码
InputStreamReader isr = new InputStreamReader(基础字节流对象,"编码格式");//输入


OutputStreamWriter osw = new OutputStreamWriter(基础字节流对象,"编码格式");//输出

对象操作输入流(反序列化流): 从文件中读取存储的对象:

java 复制代码
 ObjectInputStream ois = new ObjectInputStream(FileInputStream对象(转换流也行));

 类 对象 =   ois.readObject();

 List<类名> 对象List = (List<类名>) ois.readObject(); //使用反序列化流读取文件中的多个对象

对象操作输出流(序列化流): 把内存中创建的对象,写入到文件中:

java 复制代码
 /*创建序列化流对象*/
ObjectOutputStream oos = new ObjectOutputStream(FileOutputStream对象 (转换流也行));

 oos.writeObject(序列化对象);//把对象写入到文件中

/*写入多个对象*/
List<类名> 对象List = new ArrayList<>();
Collections.addAll(对象List, 对象1,对象2);

序列化对象 :

java 复制代码
public class 类名 implements Serializable {

    private static final long serialVersionUID = 1L; //手动添加serialVersionUID的值,避免动态修改该类导致读取serialVersionUID的值不一致报错。

    private transient 类型 名称;//该成员变量不参与序列化操作,关键字:transient 

}

打印流:

java 复制代码
 PrintStream ps = new PrintStream("写入文件的路径/文件名.txt");

ps.print(数据);//不换行,写入
ps.println(数据);//换行,写入

/*日志使用:*/
  System.setOut(ps);
 System.out.println(数据);
相关推荐
abcnull3 小时前
用javaparser做精准测试
java·ast·静态代码分析·精准测试·javaparser
叶小鸡3 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
我的xiaodoujiao4 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
juniperhan4 小时前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
ID_180079054734 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
c++之路4 小时前
C++23概述
java·c++·c++23
复利人生 复利日知录 赋能循环5 小时前
2026年复利精进:我的每日觉醒与成长密码
学习·思维模型·知识复利·复利·独立
专注API从业者5 小时前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库
sakiko_5 小时前
UIKit学习笔记4-使用UITableView制作滚动视图
笔记·学习·ios·swift·uikit