Java IO流(字节流,InputStream,OutputStream)(字符流,Reader,Writer)

字节流:inputstream,outputstream

字符流:Reader,Writer

二、字符流

1. 字符流简介:

* 字符流中的对象融合了编码表,也就是系统默认的编码表。我们的系统一般都是GBK编码。

* 字符流只用来处理文本数据,字节流用来处理媒体数据。

* 数据最常见的表现方式是文件,字符流用于操作文件的子类一般是FileReader和FileWriter。

2.字符流读写:

注意事项:

* 写入文件后必须要用flush()刷新。

* 用完流后记得要关闭流

* 使用流对象要抛出IO异常


* 定义文件路径时,可以用“/”或者“\\”。

* 在创建一个文件时,如果目录下有同名文件将被覆盖。

* 在读取文件时,必须保证该文件已存在,否则出异常

示例1:在硬盘上创建一个文件,并写入一些文字数据

//flush和close的区别:flush刷新后可以继续输入,close刷新后不能继续输入。

class FireWriterDemo {

publicstaticvoid main(String[] args)throws IOException {//需要对IO异常进行处理

//创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。

//而且该文件会被创建到指定目录下。如果该目录有同名文件,那么该文件将被覆盖。

FileWriter fw =new FileWriter("F:\\1.txt");//目的是明确数据要存放的目的地。

//调用write的方法将字符串写到流中

fw.write("hello world!");

//刷新流对象缓冲中的数据,将数据刷到目的地中

fw.flush();

//关闭流资源,但是关闭之前会刷新一次内部缓冲中的数据。当我们结束输入时候,必须close();

fw.write("first_test");

fw.close();

//flush和close的区别:flush刷新后可以继续输入,close刷新后不能继续输入。

示例2:FileReader的reade()方法.

要求:用单个字符和字符数组进行分别读取

class FileReaderDemo {

publicstaticvoid main(String[] args) {

characters();

/*****************字符数组进行读取*********************/

privatestaticvoid characters() {

try {

FileReader fr =new FileReader("Demo.txt");

char []  buf =newchar[6];

//将Denmo中的文件读取到buf数组中。

int num =0;

while((num = fr.read(buf))!=-1) {

//String(char[] value , int offest,int count) 分配一个新的String,包含从offest开始的count个字符

sop(new String(buf,0,num));

sop('\n');

fr.close();