字节流
Java 中的 IO 流按操作数据可以分为字节流与字符流,字节流主要用于对图片,视频等数据进行操作。而字符流是可以直接读写字符的 IO 流,对文本文件可以进行较为方便的操作。
字节输出流
字符流中的输出流的基类是 Writer,但是该方法是抽象的,只能使用创建其子类对象。
由于最常用的操作是文件,所以这里我们选择 FileWrite 来演示。
写入字符到指定文本文件中
1 | import java.io.*; |
要点:
new FileWrite("F:\\demo.txt");
会将文件覆盖,如想对文件进行追加操作,则使用另一个构造方法new FileWrite("F:\\demo.txt", true)
即可将数据写入文件末尾处,而不是写入文件开始处。write
方法是将数据写入到流中,而不是文件中。flush
方法会将流中的数据写入到文件close
方法会将流中的数据写入到文件中,然后会关闭流,不可在对流进行操作。- Windows 环境下写入回车符的方法:
fw.write("\r\n");
字符流异常的处理方式
在上述的例子中,我们直接将 IO 异常抛出了,这里我们演示下如何正确处理 IO 异常。
1 | import java.io.*; |
这里要注意的是:在 finally 中对流资源进行关闭时,要注意关闭动作本身也会抛出异常,要记得处理。
字节输入流
字符流中的输出流的基类是 Reader,但是该方法是抽象的,只能使用创建其子类对象。
由于最常用的操作是文件,所以这里我们选择 FileReader 来演示。
从一个文件中读取文本内容
1 | import java.io.FileReader; |
要点:
fr.read()
返回的是一个字符在 ASCII 编码中的数值fr.read(char[] ch)
返回的是存入指定数组中有效数据的个数
综合练习
拷贝文本文件
拷贝文本文件其实就是将一个文件读取后,在将其内容写入到另一个文件中。所以将上方我们的示例综合起来即可。
1 | import java.io.FileNotFoundException; |