文章目录
IO流
- 输入流,输出流的参照物是以程序为核心.
- File类 管理文件的创建. 删除.
File file =new File("path"); // 只是对文件的描述,不能把文件夹和文件真正的创建出来
/*
** path 有相对路径和绝对路径
相对路径:创建的文件就是在该项目的工作环境下
绝对路径:就是磁盘的目录.
*/
file.exits(): 判断文件夹/文件存不存在
file.mkdir():创建一层文件件
file.mkdirs(): 创建多层文件夹.
file.delete(): 对于常见的多层文件夹,是从里往外一层一层删除.
file.createNewFile(): 真正意义上的创建文件
字节流
方向: 输入/输出
方式: 字节流/字符流
outputStream 写到文件中
步骤:
1. 找到输出流
2. 选择写入的方法
3. 关闭流.
inputStream 读入程序中
步骤
1. 选择输入流
2. 选择写入的方法
3. 把数据读到数组中
4. 数组转为String
5. 关闭流
read( ): / read( byte[] )
一个一个读 返回值类型是int 如果返回-1 则说明没有数据可读了,读入完毕.
字符流
优化字节流。
Reader
public static void test2() throws IOException{
File f=new File("c.txt");
FileReader fr=new FileReader(f);
char[] c =new char[(int) f.length()];
fr.read(c);
System.out.println(c);
fr.close();
}
Reader:输入字符流:也是节点流。可以在参数中直接传递字符串,操作对应文件。
优化 : read( ) 参数由之前的byte数组,变为char数组
Writer
public static void test() throws IOException{
FileWriter fw =new FileWriter("c.txt");
String str="hello";
fw.write(str);
fw.close();
}
Writer:输出字符流:也是节点流。
优化: wirte()参数由之前的byte数组,变为可以直接传String
对象字节流
ObjectInputStream
对象字节流是处理流:: 不能直接到达文件 ,必须要完成对象的序列化.
* 序列化: 把对象转换成字符序列,进而写到数据文件中 实现 serializable接口
* 反序列化: 字符对象还原成对象.
唯一需要注意的一点就是::
流的套接使用…
因为对象流无法直接操作文件,需要借助FileOutputStream完成.
文件字节流是节点流,
使用流的统一步骤:
1. 确认流的方向;
2. 确认流的方法.
缓存流
缓存流又叫做高级流, 就跟计算机缓存是一个道理,速度快.运行效率高.
PrintWriter :
- println() 可以实现换行写数据 ,但是需要配合FileOutputStream的允许追加的构造方法
- fiush( ) 自动刷新缓存, / close( ) 执行之前 会调用flush().
BufferedReader
- readLine( ) 可以实现成行读入数据.
while((str=br.readLine())!=null){ // 判断是否读到最后一节数据
System.out.println(str);
}
转换流
字节流—>字符流