字节流和字符流区别于转换

一、字节流与字符流的区别

  字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢?

  字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的

  字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

  那开发中究竟用字节流好还是用字符流好呢?

  在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。

  如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。

二、字节流与字符流的转换

     虽然Java支持字节流和字符流,但有时需要在字节流和字符流两者之间转换。InputStreamReader和OutputStreamWriter,这两个为类是字节流和字符流之间相互转换的类。

// 创建字节输入流          字节流--字符流--缓存字符流 
InputStream fis = new FileInputStream("D:/demo/test.txt");  
//字节输入流转化为字符输入流
InputStreamReader is = new InputStreamReader(fis);
//字符输入流转化为缓存字符输入流  
BufferedReader bis = new BufferedReader(is);  

简单的写是:BufferedReader bis = new BufferedReader (new InputStreamReader(new FileInputStream("D:/demo/test.txt"));

流的关闭顺序 
一般情况下是:先打开的后关闭,后打开的先关闭。 

猜你喜欢

转载自blog.csdn.net/qq_41582642/article/details/81178052