目录
2.3.FileInputStream,FileOutputStream:
3.1BufferedInputStream,BufferedOutputStream
3.2.BufferedReader,BufferedWriter
4.3InputStreamReader,OutputStreamWriter合并使用:
6.2具体使用:以下代码将不再输出到控制台,直接输出到指定文件:
seek(int i)-->可以将数据指定到文件的某个位置上;
1.基本介绍--流的分类:
深颜色为重点常用流;
访问文件的称为节点流,其他流为处理流,即把节点流作为参数;
字符输入输出流通常处理文本类文件,字节输入输出流通常处理非文本类文件;
字符集介绍:
2.节点流:
说明:
FileReader,FileWriter(以字符为单位)常用于处理文本文件;
读取中文时尽量一个一个字符读取,不然有可能会出现乱码现象;
FileInputStream,FileOutputStream(以字节为单位)常用于处理非文本文件;
读取文本文件会出现乱码现象;复制文本文件可以且不会出现乱码现象;
2.1.FileReader:
方法一:一个一个读取文件信息;
方法优化:
方法二:一次读取一个char[ ]数组,通常为char[1024],但是读取中文时可能出现乱码现象,读取 有汉字的文件时最好一个一个读取(3个字符表示一个汉字)
说明点:
2.2.FileWriter:
说明:
可以在FileWriter构造器中声明文件是替换原有数据还是添加数据到文件末尾;
2.3.FileInputStream,FileOutputStream:
使用FileInputStream读取文本信息时容易乱码;
复制图片过程:
3.缓冲流:
3.1BufferedInputStream,BufferedOutputStream
具体操作:
作用:
flush():作用为把缓冲区的数据清空,一个缓冲区有1024*8,即还未等缓冲区满即把数据发送;
3.2.BufferedReader,BufferedWriter
具体操作:
如果节点流和处理流声明在一起,关闭则只需关闭最外层的处理流即可;
2种方式读取文件中的数据:
readLine()方法:读取文件中的一行,但是要指定换行,不然只能读取一行数据;
4.转换流 :属于字符流
4.1基本介绍:
4.2具体使用:
4.3InputStreamReader,OutputStreamWriter合并使用:
5.标准输入输出流:了解即可
5.1基本介绍:
5.2具体操作:![](https://img-blog.csdnimg.cn/2e6c60c6f85341c0aa3a6502bec3e6d2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6IOh5aWI5pav,size_20,color_FFFFFF,t_70,g_se,x_16)
6.打印流:了解
6.1基本介绍:
6.2具体使用:以下代码将不再输出到控制台,直接输出到指定文件:
上面PrintStream类中不能放入FileWriter,放入会报错;
7.数据流
7.1基本介绍:用于读取或写入基本数据类型的变量或字符串
读写都应该使用DataInputStream,DateOutputStream,不能直接读;
读取不同类型的数据要与当初写入文件时,保持的顺序一致!
7.2具体操作:![](https://img-blog.csdnimg.cn/ec4829f41f0a4f9baf415ca2d087f4b5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6IOh5aWI5pav,size_20,color_FFFFFF,t_70,g_se,x_16)
8.对象流
8.1基本介绍:
8.2对象的序列化的基本介绍:
8.3具体实现:
8.4主要事项:
自定义类实现Serializable接口:
如果自定义类实现了Serializable接口,其内部定义的其他类也需要实现Serializable;
序列化的值可以任意赋值;
如果成员变量使用static 或transient 修饰,反序列化时将读不出来(null);
如果类中有某些属性不想序列化,可以使用transient修饰;
9.随机存储文件流:RandomAccessFile
9.1基本介绍:
JDK1.6上面写的每次write数据时,“rw”模式,数据不会立刻写入硬盘中,而“rwd”模式中数据会立即写入硬盘中;
如果写数据过程中发生异常时,“rwd”模式中已被write的数据被保存在硬盘中,而“rw”则全部丢失;
输入输出时都是与byte打交道;