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();  

        }  

catch (IOException e) {  

            sop(e.toString());  

        }  

    }  

你可能感兴趣的:(Java IO流(字节流,InputStream,OutputStream)(字符流,Reader,Writer))