希望读写一个文本文件,写了下面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();//清空流里面的内容并关闭它,这里是结束文件操作
}
}
联系客服