FileInputStream类和FileoutputStream类

FileInputStream类


  如果用户的文件读取需求比较简单,那么用户可以使用FileInputStream类,该类是从InputStream中派生出来的简单输入类,该类的实例方法都是从InputStream类继承来的。
  FileInputStream类的构造方法如下:

//使用给定的文件名name创建一个FilenameStream对象
  FileInputStream(String name)

//使用File对象创建FileInputStream对象
  FileInputStream(File file)

1、使用文件输入流读取文件

  文件输入流(输入流的子类)提供对文件的存取。为了读取文件,使用文件输入流构造方法来打开一个到达该文件的输入流(源就是这个文件,输入流指向这个文件)
  比如,读取一个abc.dat文件,建立一个文件输入流对象:

FileInputStream istream=new FileInputStream("abc.dat");

或

File f=new File("abc.dat");
FileInputStream istream=new FileInputStream(f);

2、从输入流中读取字节

  输入流的目的是提供通往数据的通道,程序可以通过这个通道读取数据。read方法给程序提供一个从输入流中读取数据的基本方法。
 read的格式如下:

int read()

  read方法从输入流中顺序读取源中的单个字节数据,该方法返回字节值(0~255直接的一个整数),如果达到源的末尾,该方法返回 -1.
  read方法的其他形式:

int read(byte b[]);
int read(byte b[], int off,int len);

  其中,off参数指定read方法把数据存放在字节数组b中的什么地方,len参数指定该方法将读取的最大字节数。
  
  FileInputStream流顺序地读取文件,只要不关闭流,每次调用read方法就顺序地读取源中其余内容,直到源的末尾或流被关闭。

3、关闭流
  虽然java在程序结束时自动关闭所有打开的流,但是当我们使用完流后,显示地关闭任何打开的流仍是一个良好的习惯。一个被打开的流可能会用尽系统资源,这取决于平台和实现。如果没有关闭那些被打开的流,那么在这个或另一个程序试图打开另一个流时,这些资源可能得不到。
  关闭输出流的另一个原因是把该流缓冲区的内容冲洗掉(通常冲洗到磁盘文件上)。在操作系统把出现所写的输出流上的那些字节保存到磁盘上之前,内容有时被存放在内存缓冲区,通过调用close()方法,可以保证操作系统把流缓冲区的内容写到它的目的地。

import java.io.File;
import java.io.FileInputStream;

public class FileDemo3 {

    public static void main(String[] args) {
        int b;
        byte a[]=new byte[25];

        try {
            File f=new File("E:/FileIO","E.java");
            FileInputStream in=new FileInputStream(f);
            while((b=in.read(a,0,25))!=-1){
                String s=new String(a,0,25);
                System.out.println(s);
            }
            in.close();
        } catch (Exception e) {
            System.out.println("File read Error"+e);
        }
    }
}

FileOutputStream类

  FileOutputStream类提供了基本的文件写入能力。除了从OutputStream类继承来的方法以外,FileOutputStream类还有两个构造方法:

//使用给定的文件名name创建一个FileOutputStream对象
FileOutputStream(String name)

//使用file对象创建FileOutputStream对象
FileOutputStream(File file)

可以使用write方法把字节写入到输出流的目的地。

write的格式如下:
public void write(byte b[])
public void write(byte b[],int off,int len)

  其中,从给定字节数组中起始于偏移量off处写len个字节到输入流,参数b是存放了数据的字节数组;off是数据的起始偏移量;len是要输出的字节数。
  FileOutputStream流顺序地写文件,只要不关闭流,每次调用write方法就顺序地向输出流写入内容,直到流被关闭。
  
  从键盘输入一行文本并将其存储到 a.txt中。

import java.io.FileOutputStream;
import java.io.IOException;

public class FileDemo4 {

    public static void main(String[] args) {
        int b;
        byte buff[]=new byte[100];
        try {
            System.out.println("输入一行文本,并存入磁盘");
            b=System.in.read(buff);//从键盘输入的字符存入buffer
            FileOutputStream writefile=new FileOutputStream("e:/FileIO/a.txt");
            writefile.write(buff,0,b);//通过流把buffer写入到文件a.txt
        } catch (IOException e) {
            System.out.println("Error "+e);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/pengzhisen123/article/details/80468162