<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在java中有很多的方法可以建立檔案寫檔案,你是否真的認真的總結過?下面筆者就幫大家總結一下java中建立檔案的五種方法。
實際上不只這5種,通過管道流的排列組合,其實有更多種,但是筆者總結的這五種可以說是最常用及最佳實踐,
前提小知識
以前我在寫技術文章涉及到“流關閉”、“連線關閉”的時候,經常有人留言:“還寫技術文章,寫個流都不知道close()”,這種留言我遇到過無數回!
在本文中大量的使用到了try-with-resources語法,這個語法真的是很久的了,但是的確還有小夥伴不知道(知道的小夥伴就略過吧)。我還是說一下,下文中的管道流不是我沒close,是自動關閉close的。
try(管道流、連線等實現了Closeable介面的類){ //這裡使用類物件操作 } //用try()包含起來,就不用在finally裡面自己手動的去 Object.close()了,會自動的關閉
java8 提供的newBufferedWriter可以建立檔案,並向檔案內寫入資料。可以通過追加寫模式,向檔案內追加內容。
@Test void testCreateFile1() throws IOException { String fileName = "D:\data\test\newFile.txt"; Path path = Paths.get(fileName); // 使用newBufferedWriter建立檔案並寫檔案 // 這裡使用了try-with-resources方法來關閉流,不用手動關閉 try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) { writer.write("Hello World -建立檔案!!"); } //追加寫模式 try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.APPEND)){ writer.write("Hello World -字母哥!!"); } }
下面的這種方式Files.write,是筆者推薦的方式,語法簡單,而且底層是使用Java NIO實現的。同樣提供追加寫模式向已經存在的檔案種追加資料。這種方式是實現文字檔案簡單讀寫最方便快捷的方式。
@Test void testCreateFile2() throws IOException { String fileName = "D:\data\test\newFile2.txt"; // 從JDK1.7開始提供的方法 // 使用Files.write建立一個檔案並寫入 Files.write(Paths.get(fileName), "Hello World -建立檔案!!".getBytes(StandardCharsets.UTF_8)); // 追加寫模式 Files.write( Paths.get(fileName), "Hello World -字母哥!!".getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND); }
PrintWriter是一個比較古老的檔案建立及寫入方式,從JDK1.5就已經存在了,比較有特點的是:PrintWriter的println方法,可以實現一行一行的寫檔案。
@Test void testCreateFile3() throws IOException { String fileName = "D:\data\test\newFile3.txt"; // JSD 1.5開始就已經存在的方法 try (PrintWriter writer = new PrintWriter(fileName, "UTF-8")) { writer.println("Hello World -建立檔案!!"); writer.println("Hello World -字母哥!!"); } // Java 10進行了改進,支援使用StandardCharsets指定字元集 /*try (PrintWriter writer = new PrintWriter(fileName, StandardCharsets.UTF_8)) { writer.println("first line!"); writer.println("second line!"); } */ }
createNewFile()方法的功能相對就比較純粹,只是建立檔案不做檔案寫入操作。 返回true表示檔案成功,返回 false表示檔案已經存在.可以配合FileWriter 來完成檔案的寫操作。
@Test void testCreateFile4() throws IOException { String fileName = "D:\data\test\newFile4.txt"; File file = new File(fileName); // 返回true表示檔案成功 // false 表示檔案已經存在 if (file.createNewFile()) { System.out.println("建立檔案成功!"); } else { System.out.println("檔案已經存在不需要重複建立"); } // 使用FileWriter寫檔案 try (FileWriter writer = new FileWriter(file)) { writer.write("Hello World -建立檔案!!"); } }
最原始的方式就是使用管道流巢狀的方法,但是筆者覺得這種方法歷久彌新,使用起來非常靈活。你想去加上Buffer緩衝,你就巢狀一個BufferedWriter,你想去向檔案中寫java物件你就巢狀一個ObjectOutputStream。但歸根結底要用到FileOutputStream。
@Test void testCreateFile5() throws IOException { String fileName = "D:\data\test\newFile5.txt"; try(FileOutputStream fos = new FileOutputStream(fileName); OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osw);){ bw.write("Hello World -建立檔案!!"); bw.flush(); bw.close(); } }
import org.apache.commons.io.FileUtils; public static void saveTxt(String filePath, String fileName, String data){ try{ File folder = new File(filePath); if(!folder.exists()){ folder.mkdirs(); } File file = new File(filePath + "/" + fileName); FileUtils.writeStringToFile(file,data,"UTF-8"); }catch(IOEException e){ log.error("error") } }
以上就是6種java建立寫入檔案的方式,包括原始碼範例,更多關於JAVA建立讀寫檔案的方法請檢視下面的相關連結
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45