Java IO(五)字节流 FileInputStream 和 FileOutputStream

Java IO(五)字节流 FileInputStream 和 FileOutputStream

一、介绍

字节流 InputStream 和 OutputStream 是字节输入流和字节输出流的超类(父类)。FileInputStream 和 FileOutputStream 是字节流用于操作文件的子类。

(一)、FileInputStream

FileInputStream 是文件字节输入流,继承自 InputStream,通常,我们使用FileInputStream从某个文件中获得输入字节。

(二)、FileOutputStream

FileOutputStream 是文件字节输出流,继承自 OutputStream,通常,我们使用 FileOutputStream 将数据写入 File 或者 FileDescriptor  的输出流。

二、构造方法

(一)、FileInputStream构造方法

 

(二)、FileOutputStream构造方法

三、常用API

(一)、FileInputStream常用API

(二)、FileOutputStream常用API

四、实例

(一)、单个字节读写数据

public static void main(String[] args) {
    File file = new File("test.txt");
    write(file, 'A');
    char r = read(file);
    System.out.println(r);
}

// 写入单个字节数据
public static void write(File file,int b) {
    FileOutputStream fos = null;
    try {
        // 追加模式默认为 false ,即数据不续写到文件中
        fos = new FileOutputStream(file);
        fos.write(b);
    }catch(Exception e) {
        e.printStackTrace();
    }finally {
        try {
            if (fos != null) {
                fos.close();
           }
        }catch(Exception e) {
            e.printStackTrace();
      }
  }   
}
    
// 读取单个字节数据
public static char read(File file) {
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(file);
        return (char)fis.read();
    }catch (Exception e) {
        e.printStackTrace();
    }finally {
        try {
            if (fis != null) {
                fis.close();
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    return 0;
}

(二)、字节数组读取数据

public static void main(String[] args) {
    write();
    read();
}

public static void write() {
    FileOutputStream fos = null;
    File file = new File("test.txt");
    byte[] buffer = "abcdefghijklmnopqrstuvwxyz".getBytes();
    try {
        // 指定追加模式为true
        fos = new FileOutputStream(file, true);
        // 以字节数组写入
        fos.write(buffer);
    }catch(Exception e) {
        e.printStackTrace();
    }finally {
        try {
          if (fos != null) {
             fos.close();
           }
        }catch (Exception e) {
           e.printStackTrace();
        }
  }
}

//读取字节数组数据
public static void read() {
  File file = new File("test.txt");
  FileInputStream fis = null;
  byte[] buffer = new byte[10];
  int len = 0;
  try {
    fis = new FileInputStream(file);
    while((len = fis.read(buffer)) != -1) {
      fis.read(buffer, 0, len);       System.out.println(
new String(buffer));     }   }catch(Exception e) {     e.printStackTrace();   }finally {     try {       if (fis != null) {         fis.close();       }     }catch(Exception e) {       e.printStackTrace();     }   }
}
原文地址:https://www.cnblogs.com/lingq/p/12916908.html