第十二章 java流与文件操作 第一讲

来源:互联网 发布:夏普打印机网络打印机 编辑:程序博客网 时间:2024/04/30 12:59

  第十二章  java流与文件操作  第一讲

在这一章中主要讲的是在面向对象语言中,输入和输出都是通过数据流来实现的。以及在Java中,处理数据流的类主要被放在java .io包中。

第 一  数据流的概念

数据源和数据宿统称为数据源,但是从仔细的方面讲数据源是是指那些能够提供数据的地方,包括键盘、磁盘文件、网络接口等。而数据宿则是接收数据的地方。

正因为数据源的多样性,才有了数据流。

Java中把不同的数据源与程序之间的数据传输都抽象表述为“流”(stream),以实现相对统一和简单的输入/输出操作方式。

 

根据数据方向的不同可分为:

(1)根据数据流动的方向,可分为输入流(Input Stream)和输出流。输入流只能从中读取数据,而不能向其写出数据;输出流则只能向其写出数据,而不能从中读取数据。

(2)根据数据流所关联的是数据源还是其他数据流,可分为节点流(NodeStream)和处理流(Processing Stream)。节点流可以从/向一个特定的地方读/写数据。处理流是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现增强的数据读/写功 能,处理流并不直接连接到数据源。

(3)根据传输数据的“颗粒大小”划分,可分为字符流(Character Stream)和字节流(Byte Stream)。

 

字符流和字节流的不同:

(1)  节点流

实例化: FileReader fr=new FileReader("dome.txt")

         注意:dome.txt是读取指定的文件名称

 (2)处理流 

实例化:BufferedReader bf=new BufferedReader(newFileReader("dome.txt"));

注意:BufferedReader 是对输入的缓冲,对数据的连接和封装

字节流一次或多次传送对个字节   可处理所有类型的数据

字符流一次或多次传送对个字流    只能处理字符数据

所有字节流都是以 InputStream  OutputStream 结尾的

所有字符流都是以 Reader  Writer 结尾的

 

一   Reader Writer字符的输入和输出

Reader和Writer是父类,是抽象类,用来处理数据的输入和输出

(1)首先说一下Reader类,他共有三种read重载的方法

第一种:public int read() throws IOException

第二种:public int read(char[] cbuf) throws IOException

      注意: 读到的是实际的数据,并不是数组的长度

第三种:public abstract int read(char[] cbuf, int off,int len) throwsIOException

注意:int off是读取到的偏移量(从哪个位置开始存放) int len是读取的长度

 

     (2)然后是Writer父类,也是三种writer重载的方法

         第一种:public void write(int c) throws IOException

         第二种:public void write(char[] cbuf)  throws IOException

第三种:public abstract void write(char[] cbuf,int off, int len) throwsIOException

 

FileWriter的使用

 

       FileWriter类只有自己的构造函数,此类是在利用构造函数的基础上用于创建文本文档,在创建的过程中可以在当前的路径下,也可以在指定的路径下。

 例如: FileWriter fw=newFileWriter("d:/q/demo.txt");

 

FileReader的使用

 

  是用来从指定的文本中读取数据,在读取的时候有两种方式,一种是一个字符一个 字符的读,另一种是当初数组来读。

 

(1)当在用read()时是一个 字符一个字符的读

     int n=fr.read();

     while(n!=-1){

         System.out.print((char)n);//强制类型转换,每读取一个都显示出来

           n=fr.read();

    }

 

 (2)当在用read(char[] cbuf)是当成数组

    FileReader fr=null;

    char[] arr=new char[1024];

    try{

        fr=newFileReader("d:\\q\\demo.txt");

        int len=fr.read(arr); //读取的返回值是实际读到的字符数,

        while(len!=-1){

           System.out.println(new String(arr,0,len));

               注意:构建字符串对象,如果字符没有超过1024时,读取的是实际的个数,如果超过1024,则把1024个字符封装成字符数组返回并输出,如果超过1024个字符,

则从第一次保存的字符开始接着读取,知道读完。

           len=fr.read(arr);

        }

    }catch(IOExceptione ){

       System.out.println(e.totring());

}

 

原创粉丝点击