架构图:
架构图2:
代码1:
package com.wkcto.chapter06.fileinputstream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; /** * 异常处理 * */ public class Test05 { public static void main(String[] args) { // readData(); //以字节为单位读取文件内容, 异常处理, 手动关闭流 readData2(); //以字节数组为单位读取文件内容, 异常处理, 自动 关闭流, 从JDK7开始 } private static void readData2() { try ( FileInputStream fis = new FileInputStream("d:/abc.txt"); ) { byte [] bytes = new byte[8]; //字符数组一般情况下是1024的偶数倍 int len = fis.read(bytes); while( len != -1){ System.out.print( new String(bytes, 0 ,len)); len = fis.read(bytes); } } catch (Exception e) { } } private static void readData() { FileInputStream fis = null; try { fis = new FileInputStream("d:/abc.txt"); int cc = fis.read(); while( cc != -1 ){ System.out.print( (char)cc ); cc = fis.read(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if ( fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
示例代码2:
package com.wkcto.chapter06.fileinputstream; import java.io.FileOutputStream; import java.io.IOException; /** * 演示FileOutputStream, 把程序中的数据保存到文件中 * * */ public class Test06 { public static void main(String[] args) throws IOException { //1)建立当前程序与文件之间的流通道, 如果文件不存在,会创建一个新的文件,如果文件已存在,会覆盖原来的内容 // FileOutputStream fos = new FileOutputStream("d:/def.txt"); //1)建立当前程序与文件之间的流通道, 如果文件不存在,会创建一个新的文件,如果文件已存在,原文件后面追加新的内容 FileOutputStream fos = new FileOutputStream("d:/def.txt", true); //以追加的方式打开文件 //2)把数据保存到文件中 //2.1 可以一次保存一个字节 fos.write(97); fos.write(98); fos.write(99); //2.2 可以一次保存一个字节数组 byte[]bytes = "wkcto is a NB Website".getBytes(); fos.write(bytes); //2.3 换行 , 在Windows操作系统中,换行需要 两个 字符 fos.write(' '); fos.write(' '); //2.4 保存字节数组中部分字节 fos.write(bytes, 0, 5); //3)关闭流通道 fos.close(); } }