李成笔记网

专注域名、站长SEO知识分享与实战技巧

字节流与字符流的区别 字节流与字符流的区别在于

我们来看看两者的区别吧,字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢?

  • 字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。
  • 字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容。
  • Reader类的read()方法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1 inputStream的read()虽然也返回int,但由于此类是面向字节流的,一个字节占8个位,所以返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。因此对于不能用0-255来表示的值就得用字符流来读取!比如说汉字.

那两者有什么区别呢?

字节流:处理字节和字节数组或二进制对象。

字符流:处理字符、字符数组或字符串。

那我们使用字符还是字节呢,看一下两个应用场景。

字符(Reader和 Writer):中文,字符是只有在内存中才会形成的,操作字符、字符数组或字符串,

字节(InputStream 和OutputStream):音频文件、图片、歌曲,所有的硬盘上保存文件或进行传输的时候,操作字节和字节数组或二进制对象, *如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言