java I/O流

一。分类与区别

1.根据数据流的方向分为 输出流和输入流

2.根据处理数据单位分为 字节流和字符流,

 1字符=2字节

 字节流:处理所有类型的数据,如图像,视频,以及PPT,Word类型的文件,使用字节流时可能会出现中文乱码,类型为(byte),直接操作文件,没有缓存区,不用调用close()也能输出信息

 字符流:处理纯文本,如.txt文件,不会出现中文乱码,类型为(String),输出到缓冲区,只有调用close()才能输出信息,否则调用flush()方法。

 缓冲区:缓冲区是一段特殊的内存区域,很多情况下当程序需要频繁地操作一个资源(如文件或数据库)则性能会很低,所以为了提升性能就可以将一部分数据暂时读写到缓存区,以后直接从此区域中读写数据即可,这样就显著提升了性。

 OutputStreamWriter(OutStreamout):将字节流以字符流输出。

 InputStreamReader(InputStream in):将字节流以字符流输入

3.根据功能分为节点流和处理流,

   节点流:可以从或向一个特定的地方(节点)读写数据,如:FileReader

 处理流(用来包装节点流):是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。

 

二。常用类

1. File(文件特征与管理):File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。  

2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。

3. OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。

4.Reader(文件格式操作):抽象类,基于字符的输入操作。

5. Writer(文件格式操作):抽象类,基于字符的输出操作。

6. RandomAccessFile(随机文件操作):一个独立的类,直接继承至Object.它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。

 

三。用法

3.1字节流输出
File file = new File("H:" + File.separator + "test.txt");
OutputStream outputStream = new FileOutputStream(file);
String str = "发夹好,。得分机会";
byte[] bytes = str.getBytes();
outputStream.write(bytes);
outputStream.close();

3.2字符流输出
File file = new File("H:" + File.separator + "test.txt");
Writer writer = new FileWriter(file);
writer.write("反倒是哦分和第四fdsj5888");
writer.close();

3.3.字符输入流
File file = new File("H:" + File.separator + "test.txt");
Reader reader = new FileReader(file);
int num = 0;
num = reader.read();
while ((num = reader.read()) != -1) {
   System.out.println((char) num);
}
reader.close();
3.4字节流输出处理中文乱码
File file = new File("H:" + File.separator + "test.txt");
FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line=null;
while ((line=bufferedReader.readLine())!=null){
System.out.println(line);
}
file.delete();
bufferedReader.close();
inputStreamReader.close();

 

参考文档

https://www.cnblogs.com/FORCASH/p/9068582.html

https://blog.csdn.net/sinat_37064286/article/details/86537354

posted @ 2020-07-29 14:43  伏沙金  阅读(193)  评论(0编辑  收藏  举报