Java的输入、输出流

1.I/O流库提供的四个重要的abstract类数组

  • InputStream 字节输入流
  • Reader 字符输入流
  • OutputStream 字节输出流
  • Writer 字符输出流

前二者为其子类提供了重要的读取数据的read()方法,后二者为其子类提供了重要的写入数据的write()方法。app

2.文件spa

建立一个File对象的构造方法有:对象

  • File(String filename);      
  • File(String directoryPath,String filename);      
  • File(File f, String filename);

filename是文件名字,directory Path是文件的路径,f是一个目录。继承

使用第一种构造方法建立文件时,文件被认为时与当前应用程序再同一目录下。接口

3.文件字节流字符串

1):FileInputStream类是InputStream类的子类,称为文件字节输入流,按字节读取文件中的数据。该类的全部方法都是从InputStream类继承来的。it

构造方法:object

  • FileInputStream(String name)
  • FileInputStream(File file)

构造方法参数指定的文件称为输入流的源,输入流经过使用read()方法从输入流读出源中的数据。file

read方法的形式:

  • int read():从输入流中顺序读取单个字节的数据
  • int read(byte b[])
  • int read(byte b[],int off,int len)把多个字节读到一个字节数组中,返回实际读取的字节个数。参数off指定read()方法把数据存放在字节数组b中的位置,参数len指定该方法将读取的最大字节数。

注:FileInputStream流顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取文件中其他地内容,知道文件的末尾或流被关闭。故在不使用的时候应该调用.close()关闭流。

2):FileOutputStream提供了基本的文件写入能力,是OutputStream的子类,称为文件字节输出流。文件字节输出流按字节将数据写入到文件中。

构造方法:

  • FileOutputStream(String name)  
  • FileOutputStream(File file)  
  • FileOutputStream(String name, boolean append)  
  • FileOutputStream(File file, boolean append) 

输出流使用write()方法把数据写入输出流到达目的地。

  • public void write(byte b[]):写b.length个字节到输出流。
  • public void write(byte b[],int off,int len):从给定字节数组中起始于偏移量off处写len个字节到输出流,参数b是存放了数据的字节数组。

注:只要不关闭流,每次调用write()方法就顺序地像文件写入内容,直到流被关闭。

4.文件字符流

1):FileReader类是Reader的子类,称为文件字符输入流。文件字符输入流按字符读取文件中的数据。

构造方法:

  • FileReader(String name)
  • FileReader(File file)

构造方法参数指定的文件称为输入流的源,输入流经过使用read()方法从输入流独处源中的数据。

  • int read() 输入流调用该方法从源中读取一个字符。该方法返回一个整数,若是未读出字符就返回-1。
  • int read(char b[])输入流经过调用该方法从源中读取b.length个字符到字符数组b中,返回实际读取的字符数目。若是到达文件的末尾,则返回-1.
  • int read(char b[],int off,int len)输入流调用该方法从源中读取len个字符并存放到字符数组b中,返回实际读取的字符数目。若是到达文件的末尾,则返回-1。其中,参数off知道该方法从字符数组b的什么地方存放数据。

2)FileWrite类:

FileWrite提供了基本的文件写入能力。FileWrite类是Write的子类,称为文件字符输出流。文件字符输出流按字符将数据写入到文件中。

构造方法:

  • FileWriter(String name);    
  • FileWriter (File file);  
  • FileWriter (String name, boolean append);  
  • FileWriter (File file, boolean append);

构造方法参数指定的文件称为输出流的目的地。输出流使用write()方法把数据写入输出流到目的地。

  • public void write(char b[])  写b.length个字符到输出流  
  • void.write(char b[],int off,int len)  从给定字符数组中起始于偏移量off处写len个字符到输出流,参数b是存放了数据的字符数组  
  • void write(String str)  把字符串中的所有字符写入到输出流  
  • void write(String str,int off,int len)  从字符串str中起始于偏移量off处写len个字符到输出流

只要不关闭流,每次调用write()方法就顺序地向文件写入内容,直到流被关闭。

5.缓冲流

1)BufferedReader类

    BufferedReader类建立的对象称为缓冲输入流,该输入流的指向必须是一个Reader流,称为BufferedReader流的底层流,底层流负责将数据读入缓冲区。     BufferedReader流的源就是这个缓冲区,缓冲输入流再从缓冲区中读取数据。  

    能够将BufferedReader与FileReader链接,而后BufferedReader就能够按行读FileReader指向的文件。BufferedReader的构造方法以下:

BufferedReader(Reader in)     BufferedReader流可以读取文本行,方法是         readLine()     能够向BufferedReader传递一个Reader对象(如FileReader的实例)来建立一个BufferedReader对象:    

FileReader inOne=new FileReader("Student.txt")          

BufferedReader inTwo=new BufferedReader(inOne); 而后inTwo调用readLine()顺序读取文件“Student.txt”的一行。

2)BufferedWriter类

能够将BufferedWriter流和FileWriter流链接在一块儿,而后使用BufferedWriter流将数据写到目的地。    

FileWriter流称为BufferedWriter的底层流,BufferedWriter流将数据写入缓冲区,底层流负责将数据写到最终的目的地。例如,

FileWriter tofile=new FileWriter("hello.txt");          

BufferedWriter out=new BufferedWriter(tofile);    

BufferedReader流调用方法:          

write(String str)          

write(String s,int off,int len)     把字符串s或s的一部分写入到目的地。     BufferedWriter调用newLine()方法,能够向文件写入一个回行,调用flush()能够刷新缓冲区。

 

 

 

6.缓冲流

ObjectInputStream类和ObjectOutputStream类建立的对象被称为对象输入流和对象输出流。构造方法:          

ObjectInputStream(InputStream in)          

ObjectOutputStream(OutputStream out)        

对象输出流使用writeObject(Object obj)方法将一个对象obj写入输出流送往目的地,对象输入流使用readObject()从源中读取一个对象到程序中。    

将一个对象写入到文件时,首先用FileOutputStream建立一个文件输出流,以下所示:

FileOutputStream file_out=new FileOutputStream("tom.txt"); ObjectOutputStream object_out=new ObjectOutputStream(file_out);  

准备从文件中读入一个对象到程序中时,首先用FileInputStream建立一个文件输入流,以下所示:

FileInputStream file_in=new FileInputStream("tom.txt");

ObjectInputStream object_in=new ObjectInputStream(file_in);

注:①当咱们使用对象流写入或读入对象时,要保证对象是序列化的。 ②一个类若是实现了Serializable接口,那么这个类建立的对象就是序列化的对象。 ③使用对象流把一个对象写入到文件时不只保证该对象是序列化的,并且该对象的成员对象也必须是序列化的。

相关文章
相关标签/搜索