Fork me on GitHub

乱七八糟的流

由于工作用到了各种流,所以就查阅资料总结一下,查询资料需谨慎啊,有的有错误,多看看。

首先了解两个概念:字节流和字符流。

字节流--传输过程中,传输数据的最基本单位是字节的流;

字符流--传输过程中,传输数据的最基本单位是字符的流。

字符流顾名思义读出来的都是字符,所以只用来读文本文件,其他非文件的二进制文件当然要用字节流来读了,最常见的就是一些流媒体文件,都是直接读取的字节。


写了一堆然后删掉了,直接贴上一篇链接,详细的雅痞,直接看就行了。

原文:https://www.cnblogs.com/progor/p/9357676.html

 

另外附加几句话为了理解(复制来的):

(1) InputStream  inputstream  = new  FileInputStream("fileName");//然后对InputStream 进行读操作,为啥是读呢?可以把内存当作主体,

这是某个网友说的,你从硬盘往内存里Input 东西就是读取数据咯。 另外这里因为FileInputStream继承InputStream 类//所以可以这样用。

(2)字符流顾名思义读出来的都是字符,所以只用来读文本文件,其他非文件的二进制文件当然要用字节流来读道了,最常见的就是一些流媒体文件,

都是直接读取的字节啊。至于回为什么提供2种流,当然是为了使用方便罗,你硬要把字符拆成字节来读,然后自己再写代码解析出字符也答是可以的,反过来也一样。

(3)工作中的一个例子:

 1 String text = "";
 4              String encoding="UTF-8";
 5              File file_txt = new File(path);
 6              if(file_txt.isFile() && file_txt.exists()){ //判断文件是否存在
 7                  InputStreamReader read = new InputStreamReader(//字节流转换为字符流
 8                  new FileInputStream(file_txt),encoding);//考虑到编码格式
 9                  BufferedReader bufferedReader = new BufferedReader(read);//将数据进行缓冲,提高效率
10                  //BufferedReader也可以叫缓冲流,缓冲到一块特殊的内存中,这样就不用读一下写一下了,可以直接读取一部分到内存中再写
11                  text = bufferedReader.readLine();
12                  read.close();
13                  bufferedReader.close();
14              }

  或者:
 InputStream file = new FileInputStream("文件名");
 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(file));

 

 

  

 

posted @ 2020-04-16 16:26  秋刀  阅读(236)  评论(0编辑  收藏  举报