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

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

这种做法是错误的,正确写法是:
BufferedWriter ut = 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包中所有字符流的抽象基类[字符流类结构图]
f134b8d3b9a75330970a1682.jpg
图1:Reader类层次结构

0d85b40fc84ce9e9ab645781.jpg
图二、Writer类层次结构

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

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

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

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

1dc73e73296ca1188701b083.jpg
图三: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 ut = 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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11813230/viewspace-626864/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11813230/viewspace-626864/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值