字符输出流的续写和换行 和使用try_catch_finally处理流中的异常
续写和换行
续写,追加写:使用两个参数的构造方法
FileWriter(String fileName, boolean append)
FileWriter(File file, boolean append)
参数:
String fileName,File file:写入数据的目的地
boolean append:续写开关 true:不会创建新的文件覆盖源文件,可以续写; false:创建新的文件覆盖源文件
换行:换行符号
windows:\r\n
linux:/n
mac:/r
public class Demo04Writer { public static void main(String[] args) throws IOException { FileWriter fw = new FileWriter("g.txt",true); for (int i = 0; i <10 ; i++) { fw.write("HelloWorld"+i+"\r\n"); } fw.close(); } }
在jdk1.7之前使用try catch finally 处理流中的异常
格式:
在jdk1.7之前使用try catch finally 处理流中的异常 格式: try{ 可能会产出异常的代码 }catch(异常类变量 变量名){ 异常的处理逻辑 }finally{ 一定会指定的代码 资源释放 }
列:
public class Demo01TryCatch { public static void main(String[] args) { //提高变量fw的作用域,让finally可以使用 //变量在定义的时候,可以没有值,但是使用的时候必须有值 //fw = new FileWriter("09_IOAndProperties\\g.txt",true); 执行失败,fw没有值,fw.close会报错 FileWriter fw = null; try{ //可能会产出异常的代码 fw = new FileWriter("w:\\g.txt",true); for (int i = 0; i <10 ; i++) { fw.write("HelloWorld"+i+"\r\n"); } }catch(IOException e){ //异常的处理逻辑 System.out.println(e); }finally { //一定会指定的代码 //创建对象失败了,fw的默认值就是null,null是不能调用方法的,会抛出NullPointerException,需要增加一个判断,不是null在把资源释放 if(fw!=null){ try { //fw.close方法声明抛出了IOException异常对象,所以我们就的处理这个异常对象,要么throws,要么try catch fw.close(); } catch (IOException e) { e.printStackTrace(); } } } } }