A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 佛山java爱好者 中级黑马   /  2014-7-17 21:34  /  1558 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
public class TestTransForm1 {
public static void main(String[] args) {
try {
OutputStreamWriter osw = new OutputStreamWriter(new    FileOutputStream("D:/java/io/TestTransForm.txt"));
osw.write("abc");
System.out.println(osw.getEncoding());
osw.close();    //最后结果是写入abcdef,如果没有这句,最后结果写入def,求解析,分析下内存
osw = new OutputStreamWriter(new FileOutputStream("D:/java/io/TestTransForm.txt",true),"ISO8859_1");
osw.write("def");
System.out.println(osw.getEncoding());
osw.close();
} catch (IOException ex) {ex.printStackTrace();}
}
}

1 个回复

正序浏览
osw.close(); //关闭该留把内存中的数据刷新到硬盘中
如果把下面注掉,它想做得是把之前在堆中创建的流舍弃掉(由于留还没关闭或者flush,它的数据自然不会写到文件中),然后在堆中在新建一个对象,吧引用给之前的osw,由于在osw一系列操作之后成功关闭了流,所以它的数据成功地写到文件中.
//osw.close();    //最后结果是写入abcdef,如果没有这句,最后结果写入def,求解析,分析下内存
osw = new OutputStreamWriter(new FileOutputStream("D:/java/io/TestTransForm.txt",true),"ISO8859_1");
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马