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