事情是这样的,隔壁组新来的妹子呢不会写生成txt文件,领导让我去指导一下,于是我手摸手教她写了好几个方法并顺便给她讲了一下try-with-resourse的妙用并叮嘱她平时多看看jdk源码少刷沸点如果看不懂jdk源码可以来看看cultivater的文章......
//生成文件的路径
String path="C:\\Users\\cultivater\\Desktop\\";
//文件name
String fileName="a.txt";
List<String> list=new ArrayList();
list.add("sister:"+"\n");
list.add("bro");
File file =new File(path+fileName);
1.FileWrite
try{
FileWriter fileWritter = new FileWriter(file);
for(String ele:list){
fileWritter.write(ele);
}
//手动关闭文件流
fileWritter.close();}catch (Exception e){
e.printStackTrace();
}
2.指定字符集并自动关闭流
try(BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"utf-8"))){
for(String ele:list){ out.write(ele);
}}catch (Exception e){
e.printStackTrace();
}
3.Files封装方法可以指定字符集
* @param path
* the path to the file 文件路径:比如 d:\\a.txt
* @param lines
* an object to iterate over the char sequences 可被迭代的字节序:比如 list
* @param cs
* the charset to use for encoding 字符集 比如:Charset.forName("utf-8")Files.write(Paths.get(path+fileName),list,Charset.forName("utf-8"));
我们都知道流或者连接这种事情一旦开启使用完毕之后就要即时关闭,否则会产生资源浪费。另外一个重要的原因,如果不关闭流,第一次可能没什么事儿,随着次数的增多,如果你再次对未关闭的流进行操作会被告知文件已被占用,甚至系统崩溃。所以我们一般会手动close掉,一般的写法是直接使用完毕后接close,或者在finnly中close有备无患也就是try-catch-finnly。从jdk7之后有了try-with-resource之后我们就不用再finnly了,程序会自动关闭流,但是你要按照它的写法来,它会帮你关闭。
4.try-with-resource
try-with资源语句确保每个资源在发言结束时关闭。任何实现 的对象java.lang.AutoCloseable
包括所有实现 的对象java.io.Closeable,都可以用作资源。但是资源生命必须包含在try后面的小括号中,就像2.指定字符集并自动关闭流。那样写!
这样我们就不用手动去关闭流了。
听了我一番热气洋溢的讲解与手摸手亲切友好的指导后,妹子抬起头真诚的对我说了声:“谢谢”,我故作淡定的说了句:“没事,以后有技术上的问题找我就行了。”我压抑着心中的喜悦大步流星的迈向了我的工位,坐下之后发现通讯上有了妹子的好友申请......
阅读参考: