成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

總結Java中創建并寫文件的5種方式

新聞 后端
在java中有很多的方法可以創建文件寫文件,你是否真的認真的總結過?下面筆者就幫大家總結一下java中創建文件的五種方法。

 在java中有很多的方法可以創建文件寫文件,你是否真的認真的總結過?下面筆者就幫大家總結一下java中創建文件的五種方法。

  1. Files.newBufferedWriter 
  2. Files.write 
  3. PrintWriter 
  4. File.createNewFile 
  5. FileOutputStream.write(byte[] b) 

實際上不只這5種,通過管道流的排列組合,其實有更多種,但是筆者總結的這五種可以說是最常用及最佳實踐,

前提小知識

以前我在寫技術文章涉及到“流關閉”、“連接關閉”的時候,經常有人留言:“還寫技術文章,寫個流都不知道close()”,這種留言我遇到過無數回!

在本文中大量的使用到了try-with-resources語法,這個語法真的是很久的了,但是的確還有小伙伴不知道(知道的小伙伴就略過吧)。我還是說一下,下文中的管道流不是我沒close,是自動關閉close的。

  1. try(管道流、連接等實現了Closeable接口的類){ 
  2.     //這里使用類對象操作 
  3. //用try()包含起來,就不用在finally里面自己手動的去 Object.close()了,會自動的關閉 

1. Java 8 Files.newBufferedWriter

java8 提供的newBufferedWriter可以創建文件,并向文件內寫入數據。可以通過追加寫模式,向文件內追加內容。

  1. @Test 
  2. void testCreateFile1() throws IOException { 
  3.    String fileName = "D:\\data\\test\\newFile.txt"
  4.  
  5.    Path path = Paths.get(fileName); 
  6.    // 使用newBufferedWriter創建文件并寫文件 
  7.    // 這里使用了try-with-resources方法來關閉流,不用手動關閉 
  8.    try (BufferedWriter writer = 
  9.                    Files.newBufferedWriter(path, StandardCharsets.UTF_8)) { 
  10.       writer.write("Hello World -創建文件!!"); 
  11.    } 
  12.  
  13.    //追加寫模式 
  14.    try (BufferedWriter writer = 
  15.                 Files.newBufferedWriter(path, 
  16.                         StandardCharsets.UTF_8, 
  17.                         StandardOpenOption.APPEND)){ 
  18.        writer.write("Hello World -字母哥!!"); 
  19.    } 

2. Java 7 Files.write

下面的這種方式 Files.write ,是筆者推薦的方式,語法簡單,而且底層是使用Java NIO實現的。同樣提供追加寫模式向已經存在的文件種追加數據。這種方式是實現文本文件簡單讀寫最方便快捷的方式。

  1. @Test 
  2. void testCreateFile2() throws IOException { 
  3.    String fileName = "D:\\data\\test\\newFile2.txt"
  4.  
  5.    // 從JDK1.7開始提供的方法 
  6.    // 使用Files.write創建一個文件并寫入 
  7.    Files.write(Paths.get(fileName), 
  8.                "Hello World -創建文件!!".getBytes(StandardCharsets.UTF_8)); 
  9.  
  10.    // 追加寫模式 
  11.    Files.write( 
  12.          Paths.get(fileName), 
  13.          "Hello World -字母哥!!".getBytes(StandardCharsets.UTF_8), 
  14.          StandardOpenOption.APPEND); 

3. PrintWriter

PrintWriter是一個比較古老的文件創建及寫入方式,從JDK1.5就已經存在了,比較有特點的是:PrintWriter的println方法,可以實現一行一行的寫文件。

  1. @Test 
  2. void testCreateFile3() throws IOException { 
  3.    String fileName = "D:\\data\\test\\newFile3.txt"
  4.  
  5.    // JSD 1.5開始就已經存在的方法 
  6.    try (PrintWriter writer = new PrintWriter(fileName, "UTF-8")) { 
  7.       writer.println("Hello World -創建文件!!"); 
  8.       writer.println("Hello World -字母哥!!"); 
  9.    } 
  10.  
  11.    // Java 10進行了改進,支持使用StandardCharsets指定字符集 
  12.    /*try (PrintWriter writer = new PrintWriter(fileName, StandardCharsets.UTF_8)) { 
  13.  
  14.       writer.println("first line!"); 
  15.       writer.println("second line!"); 
  16.  
  17.    } */ 
  18.  

4. File.createNewFile()

createNewFile()方法的功能相對就比較純粹,只是創建文件不做文件寫入操作。 返回true表示文件成功,返回 false表示文件已經存在.可以配合FileWriter 來完成文件的寫操作。

  1. @Test 
  2. void testCreateFile4() throws IOException { 
  3.    String fileName = "D:\\data\\test\\newFile4.txt"
  4.  
  5.    File file = new File(fileName); 
  6.  
  7.    // 返回true表示文件成功 
  8.    // false 表示文件已經存在 
  9.    if (file.createNewFile()) { 
  10.       System.out.println("創建文件成功!"); 
  11.    } else { 
  12.       System.out.println("文件已經存在不需要重復創建"); 
  13.    } 
  14.  
  15.    // 使用FileWriter寫文件 
  16.    try (FileWriter writer = new FileWriter(file)) { 
  17.       writer.write("Hello World -創建文件!!"); 
  18.    } 
  19.  

5.最原始的管道流方法

最原始的方式就是使用管道流嵌套的方法,但是筆者覺得這種方法歷久彌新,使用起來非常靈活。你想去加上Buffer緩沖,你就嵌套一個BufferedWriter,你想去向文件中寫java對象你就嵌套一個ObjectOutputStream。但歸根結底要用到FileOutputStream。

  1. @Test 
  2. void testCreateFile5() throws IOException { 
  3.    String fileName = "D:\\data\\test\\newFile5.txt"
  4.    try(FileOutputStream fos = new FileOutputStream(fileName); 
  5.       OutputStreamWriter osw = new OutputStreamWriter(fos); 
  6.       BufferedWriter bw = new BufferedWriter(osw);){ 
  7.       bw.write("Hello World -創建文件!!"); 
  8.       bw.flush(); 
  9.    } 

 

責任編輯:張燕妮 來源: 博客園
相關推薦

2019-11-21 11:10:21

云遷移云計算

2019-05-16 13:00:18

異步編程JavaScript回調函數

2019-01-14 05:09:03

5G網絡4G

2022-03-18 09:42:54

JavaString

2022-11-17 15:17:12

Java數據結構Map

2019-05-29 19:00:35

HTML5存儲方式前端

2017-06-14 16:44:15

JavaScript原型模式對象

2012-02-16 10:36:43

Java

2023-07-05 11:14:35

IT領導者IT咨詢

2020-06-17 08:12:05

Kubernetes容器

2020-04-26 22:22:10

物聯網廣告IOT

2022-07-22 08:18:28

JARJava對象

2020-11-13 06:18:07

JupyterPython數據分析

2020-10-27 18:47:30

物聯網環境IOT

2021-06-17 10:33:29

IT首席意見企業實踐

2021-05-06 16:19:36

物聯網IoT

2011-03-23 11:22:14

oracle dbli

2021-12-01 15:40:40

節日開源剪貼畫

2010-03-18 15:31:13

Java創建線程

2019-10-10 11:50:38

Java線程開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品成人一区二区三区吃奶 | 国产午夜精品一区二区三区在线观看 | 激情欧美日韩一区二区 | 国产精品毛片 | 国产精品三级久久久久久电影 | 99久久久国产精品 | av免费网站在线观看 | 在线观看亚洲精品视频 | 精产嫩模国品一二三区 | 欧美一区二区三区精品免费 | 天天干人人 | 国产一区不卡 | 日本久久综合网 | 91精品国产色综合久久不卡98口 | 91精品久久久久 | 欧美极品在线 | 午夜久草 | 国产美女久久 | 天天看天天操 | 欧美视频一级 | 久久综合欧美 | 一区二区三区免费 | 国产在线一区二区 | 亚洲天堂成人在线视频 | 一级a性色生活片久久毛片 一级特黄a大片 | 日日综合| 亚洲成人免费视频在线 | 国产美女在线精品免费 | 精品一区二区三区在线观看 | 天天躁日日躁狠狠躁2018小说 | 日韩成人在线一区 | 欧美日韩在线综合 | 国产精品99一区二区 | 亚洲精品国产偷自在线观看 | av电影手机在线看 | 性色的免费视频 | 欧美日韩精品影院 | 午夜免费福利片 | 自拍偷拍精品 | 亚洲劲爆av | 欧美日韩中文在线 |