乱七八糟的流
由于工作用到了各种流,所以就查阅资料总结一下,查询资料需谨慎啊,有的有错误,多看看。
首先了解两个概念:字节流和字符流。
字节流--传输过程中,传输数据的最基本单位是字节的流;
字符流--传输过程中,传输数据的最基本单位是字符的流。
字符流顾名思义读出来的都是字符,所以只用来读文本文件,其他非文件的二进制文件当然要用字节流来读了,最常见的就是一些流媒体文件,都是直接读取的字节。
写了一堆然后删掉了,直接贴上一篇链接,详细的雅痞,直接看就行了。
原文: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));
乾坤未定,你我皆是黑马