打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
从out = new BufferedWriter("c:\\test.txt")谈起,深入学习I/O流

希望读写一个文本文件,写了下面2句:
BufferedWriter out;
out = new BufferedWriter("c:\\test.txt");

这种做法是错误的,正确写法是:
BufferedWriter out = newBufferedWriter( new fileWriter("c:\\test.txt"));

==============今日学习笔记================================================

学习内容java的输入输出
1、java没有标准的输入和输出语句,输入输出过程被抽象为输入输出流 [面向对象的语言!流就是对象,来抽象出输入输出的过程]
这种操作由 I/O包中的一些流类的方法来实现,常用包java.io
2、一个流:一个从源 流向 目的地的数据序列
3、输入输出流的分类
---按照流的方向划分:输入流、输出流
---按照流的分工划分:节点流、处理流
---按照流的内容划分:面向字符的流、面向字节的流!

4、java.io包的顶级层次结构
--object---inputStream\outputStream [面向字节流]\Reader\Writer[面向字符流]

Object
---字节流------|----InputStream
---字节流------|----OutputStream
---字符流------|----Reader
---字符流------|----Writer

5、什么是字符流:
所有数据都是8位字节组成,逻辑上讲,所有的流[数据序列]都是“字节流”
但是,表示[字符]的[字节流]有其特定的处理单位,故被称为“字符流”,其他的称为“字节流”
字符流:针对字符数据的特点作了优化,字符流的源和目标通常是:文本文件!
6、java字符使用16-bit的Unicode编码,每个字符2个字节,即16-bit
7、字符流可以实现java程序内部格式和文本文件、显示输出、键盘输入等外部格式之间的转换[如何转换?]
8、Reader\Writer是java.io包中所有字符流的抽象基类[字符流类结构图]


图1:Reader类层次结构


图二、Writer类层次结构

9、什么是字节流:
例如:键盘输入的数据
数据源中包含非字符数据,如:java编辑器产生的字节码文件中含有java虚拟机的指令,这些信息不能被解释为字符,必须用字节流来输入输出。
字节流:通常用于都写图片、声音等二进制的数据
10、inputStream\outputStream是用来处理8位字节流的抽象基类[字节流类结构图]

11、标准的输入输出流
=====标准输入System.in;是原始的InputStream需要经过包装(如何包装?)才可以从键盘读取信息
-----标准输出System.out;
=----标准错误输出System.err后2个是PrintStream,默认是对应屏幕的输出(还可以输出到哪里呢?)

12、处理流:
处理流不直接与数据源或目标相连,而是与另一个流进行配合(如何配合?),对数据进行某种处理
例如:BufferReader就是一个处理流,与InputStreamReader/FileWriter等节点流配合,缓冲输入输出德信息,提高效率

----------------------------以上的每一句话都值得细细体会--alonglee 舒畅java---------------------------------


图三:I/O流的链接

对文章前面提到错误代码的分析解释:
1、BufferWriter是Writer的子类,属于字符流类,可以用于文本文件的写入操作
2、但是BufferWriter类是一个处理流类,不可以直接与数据源或目标相连,这里的目标当然是一个文本文件test.txt,它需要与另一个流进行配合。那么另一个流是什么呢?
3、由于是准备写一个文本文件,需要一个节点流类---FileWrite来读取/生成一个文件
4、这样BufferWriter就是和FileWrite配合对数据进行缓冲处理!

完整的代码如下:

.....main(){
String fileName = "C:\\newTestfile.txt";// 注意是2个\\,一个是转义 或者这样写c:/newTestfile.txt
BufferWriter out = new BufferWriter(new FileWriter(fileName));//将FileWriter嵌入在BufferWriter中

out.write("this is a test file");
out.newLine();//换行
out.write("中文会不会产生问题?")
out.newLine();//换行
out.close();//清空流里面的内容并关闭它,这里是结束文件操作
}



}

来自:http://hi.baidu.com/aaa888/blog/item/7207c42a83c37f9a023bf647.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
第八章java.io包
大数据学习路线分享IO流学习笔记
徐葳【2019版最新】40小时掌握Java语言之08IO流
Java读写文本文件
任务9 数据的导入导出
FileOutputStream,OutputStreamWriter,BufferedWriter为什么连用?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服