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

總結(jié)Java中創(chuàng)建并寫文件的5種方式

新聞 后端
在java中有很多的方法可以創(chuàng)建文件寫文件,你是否真的認(rèn)真的總結(jié)過(guò)?下面筆者就幫大家總結(jié)一下java中創(chuàng)建文件的五種方法。

 在java中有很多的方法可以創(chuàng)建文件寫文件,你是否真的認(rèn)真的總結(jié)過(guò)?下面筆者就幫大家總結(jié)一下java中創(chuàng)建文件的五種方法。

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

實(shí)際上不只這5種,通過(guò)管道流的排列組合,其實(shí)有更多種,但是筆者總結(jié)的這五種可以說(shuō)是最常用及最佳實(shí)踐,

前提小知識(shí)

以前我在寫技術(shù)文章涉及到“流關(guān)閉”、“連接關(guān)閉”的時(shí)候,經(jīng)常有人留言:“還寫技術(shù)文章,寫個(gè)流都不知道close()”,這種留言我遇到過(guò)無(wú)數(shù)回!

在本文中大量的使用到了try-with-resources語(yǔ)法,這個(gè)語(yǔ)法真的是很久的了,但是的確還有小伙伴不知道(知道的小伙伴就略過(guò)吧)。我還是說(shuō)一下,下文中的管道流不是我沒(méi)close,是自動(dòng)關(guān)閉close的。

  1. try(管道流、連接等實(shí)現(xiàn)了Closeable接口的類){ 
  2.     //這里使用類對(duì)象操作 
  3. //用try()包含起來(lái),就不用在finally里面自己手動(dòng)的去 Object.close()了,會(huì)自動(dòng)的關(guān)閉 

1. Java 8 Files.newBufferedWriter

java8 提供的newBufferedWriter可以創(chuàng)建文件,并向文件內(nèi)寫入數(shù)據(jù)。可以通過(guò)追加寫模式,向文件內(nèi)追加內(nèi)容。

  1. @Test 
  2. void testCreateFile1() throws IOException { 
  3.    String fileName = "D:\\data\\test\\newFile.txt"
  4.  
  5.    Path path = Paths.get(fileName); 
  6.    // 使用newBufferedWriter創(chuàng)建文件并寫文件 
  7.    // 這里使用了try-with-resources方法來(lái)關(guān)閉流,不用手動(dòng)關(guān)閉 
  8.    try (BufferedWriter writer = 
  9.                    Files.newBufferedWriter(path, StandardCharsets.UTF_8)) { 
  10.       writer.write("Hello World -創(chuàng)建文件!!"); 
  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 ,是筆者推薦的方式,語(yǔ)法簡(jiǎn)單,而且底層是使用Java NIO實(shí)現(xiàn)的。同樣提供追加寫模式向已經(jīng)存在的文件種追加數(shù)據(jù)。這種方式是實(shí)現(xiàn)文本文件簡(jiǎn)單讀寫最方便快捷的方式。

  1. @Test 
  2. void testCreateFile2() throws IOException { 
  3.    String fileName = "D:\\data\\test\\newFile2.txt"
  4.  
  5.    // 從JDK1.7開(kāi)始提供的方法 
  6.    // 使用Files.write創(chuàng)建一個(gè)文件并寫入 
  7.    Files.write(Paths.get(fileName), 
  8.                "Hello World -創(chuàng)建文件!!".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是一個(gè)比較古老的文件創(chuàng)建及寫入方式,從JDK1.5就已經(jīng)存在了,比較有特點(diǎn)的是:PrintWriter的println方法,可以實(shí)現(xiàn)一行一行的寫文件。

  1. @Test 
  2. void testCreateFile3() throws IOException { 
  3.    String fileName = "D:\\data\\test\\newFile3.txt"
  4.  
  5.    // JSD 1.5開(kāi)始就已經(jīng)存在的方法 
  6.    try (PrintWriter writer = new PrintWriter(fileName, "UTF-8")) { 
  7.       writer.println("Hello World -創(chuàng)建文件!!"); 
  8.       writer.println("Hello World -字母哥!!"); 
  9.    } 
  10.  
  11.    // Java 10進(jìn)行了改進(jìn),支持使用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()方法的功能相對(duì)就比較純粹,只是創(chuàng)建文件不做文件寫入操作。 返回true表示文件成功,返回 false表示文件已經(jīng)存在.可以配合FileWriter 來(lái)完成文件的寫操作。

  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 表示文件已經(jīng)存在 
  9.    if (file.createNewFile()) { 
  10.       System.out.println("創(chuàng)建文件成功!"); 
  11.    } else { 
  12.       System.out.println("文件已經(jīng)存在不需要重復(fù)創(chuàng)建"); 
  13.    } 
  14.  
  15.    // 使用FileWriter寫文件 
  16.    try (FileWriter writer = new FileWriter(file)) { 
  17.       writer.write("Hello World -創(chuàng)建文件!!"); 
  18.    } 
  19.  

5.最原始的管道流方法

最原始的方式就是使用管道流嵌套的方法,但是筆者覺(jué)得這種方法歷久彌新,使用起來(lái)非常靈活。你想去加上Buffer緩沖,你就嵌套一個(gè)BufferedWriter,你想去向文件中寫java對(duì)象你就嵌套一個(gè)ObjectOutputStream。但歸根結(jié)底要用到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 -創(chuàng)建文件!!"); 
  8.       bw.flush(); 
  9.    } 

 

責(zé)任編輯:張燕妮 來(lái)源: 博客園
相關(guān)推薦

2019-11-21 11:10:21

云遷移云計(jì)算

2019-05-16 13:00:18

異步編程JavaScript回調(diào)函數(shù)

2019-05-29 19:00:35

HTML5存儲(chǔ)方式前端

2022-03-18 09:42:54

JavaString

2022-11-17 15:17:12

Java數(shù)據(jù)結(jié)構(gòu)Map

2019-01-14 05:09:03

5G網(wǎng)絡(luò)4G

2017-06-14 16:44:15

JavaScript原型模式對(duì)象

2023-07-05 11:14:35

IT領(lǐng)導(dǎo)者IT咨詢

2012-02-16 10:36:43

Java

2020-10-27 18:47:30

物聯(lián)網(wǎng)環(huán)境IOT

2021-05-06 16:19:36

物聯(lián)網(wǎng)IoT

2021-06-17 10:33:29

IT首席意見(jiàn)企業(yè)實(shí)踐

2020-04-26 22:22:10

物聯(lián)網(wǎng)廣告IOT

2020-06-17 08:12:05

Kubernetes容器

2020-11-13 06:18:07

JupyterPython數(shù)據(jù)分析

2022-07-22 08:18:28

JARJava對(duì)象

2011-03-23 11:22:14

oracle dbli

2021-12-01 15:40:40

節(jié)日開(kāi)源剪貼畫

2019-10-10 11:50:38

Java線程開(kāi)發(fā)

2010-03-18 15:31:13

Java創(chuàng)建線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久av.com| 伊人久久麻豆 | 欧美日韩一区在线 | 国产乱性 | 久久久噜噜噜www成人网 | 亚洲永久精品国产 | 亚洲色图第一页 | 国产亚洲日本精品 | 亚洲视频免费在线播放 | 一区二区久久 | 一区二区视频在线 | 欧美一区二区在线免费观看 | 91免费观看 | 午夜影院| 亚洲视频手机在线 | 成年人视频免费在线观看 | 久久成人一区 | 日韩视频一区二区三区 | 久久成| 色爱区综合| 中文字幕国产高清 | 国产一区二区在线视频 | 国产色婷婷精品综合在线播放 | 久久精品国产一区二区电影 | 久久久免费 | 免费一区 | 久久午夜精品 | 91视频88av| 久久亚洲一区二区三区四区 | 国产一区二区三区在线观看免费 | 国产超碰人人爽人人做人人爱 | 成人三级在线观看 | 日本午夜一区二区三区 | 国产精久久久 | 九九精品在线 | 亚洲一av| 亚洲午夜三级 | 免费三级网 | 精品一区二区久久久久久久网站 | 亚洲综合视频 | 麻豆久久久9性大片 |