字节流:

(A)FileOutputStream(File name) 创建一个文件输出流,向指定的 File 对象输出数据。

(B)FileOutputStream(FileDescriptor) 创建一个文件输出流,向指定的文件描述器输出数据。

(C)FileOutputStream(String name) 创建一个文件输出流,向指定名称的文件输出数据。

(D)FileOutputStream(String, boolean) 用指定系统的文件名,创建一个输出文件。

字符流:

InputStreamReader 和 OutputStreamReader :

把一个以字节为导向的 stream 转换成一个以字符为导向的 stream 。

InputStreamReader 类是从字节流到字符流的桥梁:它读入字节,并根据指定的编码方式,将之转换为字符流。

使用的编码方式可能由名称指定,或平台可接受的缺省编码方式。

InputStreamReader 的 read() 方法之一的每次调用,可能促使从基本字节输入流中读取一个或多个字节。

为了达到更高效率,考虑用 BufferedReader 封装 InputStreamReader ,

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

相同点:

InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new

字节流与字符流的区别

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

区别:

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

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

3、Reader类的read()方法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1

inputStream的read()虽然也返回int,但由于此类是面向字节流的,一个字节占8个位,所以返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。因此对于不能用0-255来表示的值就得用字符流来读取!比如说汉字.

4、字节流与字符流主要的区别是他们的的处理方式

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

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

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

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

二、字节(InputStream 和OutputStream):音频文件、图片、歌曲,所有的硬盘上保存文件或进行传输的时候,操作字节和字节数组或二进制对象,

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

***

**缓冲区

缓冲区可以简单地理解为一段内存区域。

可以简单地把缓冲区理解为一段特殊的内存。

某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能。

在字符流的操作中,所有的字符都是在内存中形成的,在输出前会将所有的内容暂时保存在内存之中,所以使用了缓冲区暂存数据。

如果想在不关闭时也可以将字符流的内容全部输出,则可以使用Writer类中的flush()方法完成。

Java字节流和字符流的优缺点_字节流与字符流的区别用字节流好还是用字符流好?...相关推荐

  1. java字节流转字符流的步骤_字节流-java入门基础笔记-51CTO博客

    [14]字节流 一.字节流 1.什么是字节流是IO流中的一种, 可以用来读写字节数据. 2.字节流和字符流的区别计算机中存储任何数据都是以字节的形式, 所以字节流可以读写任意类型的数据. 在读写的数据 ...

  2. java中递归与迭代的比较_深究递归和迭代的区别、优缺点及实例对比

    1.迭代是人,递归是神! 从"编程之美"的角度看,可以借用一句非常经典的话:"迭代是人,递归是神!"来从宏观上对二者进行把握. 从概念上讲,递归就是指程序调用自 ...

  3. java 流换行符_【求大神】如何读取含换行符的缓冲流文件

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //我项目中文件上传的代码 if (file != null) { String newFileName = null; long now = new D ...

  4. python统计字符串中某个字符出现的次数_【面试题总结】1、统计字符串中某个字符出现的次数(2-Python实现)...

    1.可以使用Python的字典实现,对于一个特定的字符串,使用for循环遍历其中的字符,并保存成字典形式.字典的key为字符,value为字符在整个字符串中出现的次数. 2.拓展:如果题目为比较两个字 ...

  5. 华为nova5ipro的优缺点_华为nova5pro和nova5i的区别

    Nova5 Pro和Nova 5i主要在屏幕尺寸.CPU和拍照方面有区别:屏幕尺寸方面,前者采用6.39英寸OLED屏幕,后者采用6.4英寸LCD屏幕:CPU方面,前者采用麒麟980,后者采用麒麟71 ...

  6. java字节流转字符串_字节流与字符流的区别及相互转换

    先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输出都是以流的形 ...

  7. c++ascii码转换为数字_平面设计人员必备Image Ascii,快速将图像转换为Ascii字符画!...

    从事平面设计的小伙伴,可能会遇到这样的烦恼,图片生成Ascii字符画!what???新手小白表示听都没听过,老司机们表示稍微有点难度.那么如何快速的将图片生成字符画呢?^_^接下来划重点咯!就是这款I ...

  8. java用字节流统计程序行数_java基础拾遗

    说说&和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则, ...

  9. 菜鸟学习笔记:Java提升篇5(IO流1——IO流的概念、字节流、字符流、缓冲流、转换流)

    菜鸟学习笔记:Java IO流1--IO流的概念.字节流.字符流.缓冲流.转换流 IO流的原理及概念 节点流 字节流 文件读取 文件写出 文件拷贝 文件夹拷贝 字符流 文件读取 文件写出 处理流 缓冲 ...

最新文章

  1. pandas使用rename函数重命名dataframe中数据列的名称、从而创建一个包含重复列名称的dataframe数据集
  2. Linker Tools Error LNK2001 报错
  3. android 线性布局 底部,java – 如何在android线性布局中对齐父底部?
  4. 原因以及如何避免产生僵尸进程
  5. 成本管理4个过程及相关重点
  6. 使用Java代码连接SAP ABAP Netweaver服务器
  7. 微信红包随机数字_微信红包随机算法转载
  8. 《精通.Net核心技术》
  9. (二十三)图像相似度比较哈希算法
  10. N720实现4G的TCP连接,数据上云的方法
  11. 一共81个,开源大数据处理工具汇总(上)
  12. python基础教程第三版pdf 脚本之家-一篇不错的Python入门教程
  13. 猫哥教你写爬虫 040--存储数据-作业
  14. unity17——布料插件制作旗子飘动效果
  15. java 取整符号_浅析java中的取整(/)和求余(%)
  16. 三维高清vR展示模型的应用及优势
  17. 美团-移动端UI一致性解决方案
  18. 使用U盘在虚拟机下安装双系统(windows and linux)乃至多系统
  19. 泰山OFFICE技术讲座:FreeType获取kerning函数FT_Get_Kerning研究
  20. python---引用其他py文件中的函数

热门文章

  1. 怎么查看ubuntu服务器gpu型号,ubuntu查看显卡型号方法有哪些
  2. 第 4 章 jQuery
  3. 了解JavaScript/JavaScript发展前景
  4. 计算机网络:局域网络设备
  5. 大新闻!针对少儿的“有艺翼”与“艺术饭+”行动 ICAE@Kid.ArtWing+国际少儿艺术展在国家会议中心开幕
  6. ArtCAM+Powermill雕刻编程加工视频教程 浮雕 玉石四轴雕刻
  7. markersize
  8. skype安卓手机版_倚天2自由世界手机版下载-倚天2自由世界安卓手机版下载v2.0
  9. 用Jupyter notebook规划旅行路线
  10. 安卓手机来电防火墙_iPhone 超酷炫的来电闪光灯,安卓手机也可以玩了。