我还想问一下字符流转换成字节流是怎么回事
1个回答
展开全部
1.首先2者的区别(你也可以查一下官方资料.比我说的更好)
在IO中所有的操作流里。字节流永远是最基础操作流。任何基于字节流的操作都是正确的。无论你是文本文件还是二进制的文件。
如果你操作的是纯文本文件,包括英文的和各种国家的文字,也包括中文,那么可以考虑用字符流。 由于编码不同,一个字符可能占用多个字节。
比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节。 所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行操作。
字符操作一般使用Writer,Reader等, 字节操作一般都是InputStream, OutputStream 以及各种包装类,比如BufferedInputStream和BufferedOutputStream等。
2.为什么要字符流转为字节流
因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取网络传输来的字符。
总结:如果你确认你要处理的流是纯文本文件,那么使用字符流会更方便,快捷。如果不确认,那么就使用字节流。
在IO中所有的操作流里。字节流永远是最基础操作流。任何基于字节流的操作都是正确的。无论你是文本文件还是二进制的文件。
如果你操作的是纯文本文件,包括英文的和各种国家的文字,也包括中文,那么可以考虑用字符流。 由于编码不同,一个字符可能占用多个字节。
比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节。 所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行操作。
字符操作一般使用Writer,Reader等, 字节操作一般都是InputStream, OutputStream 以及各种包装类,比如BufferedInputStream和BufferedOutputStream等。
2.为什么要字符流转为字节流
因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取网络传输来的字符。
总结:如果你确认你要处理的流是纯文本文件,那么使用字符流会更方便,快捷。如果不确认,那么就使用字节流。
追问
可以用代码表示吗?
追答
我们首先创建了一个FileInputStream类的实例,然后转换为InputStreamReader对象is,最后使用BufferedReader进行包装。这样就可以将字节流转换为带缓冲功能的字符流
FileInputStream fis = new FileInputStream("D:/demo/test.txt");
InputStreamReader is = new InputStreamReader(fis);
BufferedReader bis = new BufferedReader(is);
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询