最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中創(chuàng)建、寫入文件的5種方式

 更新時間:2020年08月28日 08:31:38   作者:字母哥博客  
這篇文章主要介紹了java中創(chuàng)建、寫入文件的5種方式,幫助大家更好的理解學(xué)習(xí)Java io的相關(guān)知識,感興趣的朋友可以了解下

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

  1. Files.newBufferedWriter(Java 8)
  2. Files.write(Java 7 推薦)
  3. PrintWriter
  4. File.createNewFile
  5. FileOutputStream.write(byte[] b) 管道流

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

前提小知識

以前我在寫技術(shù)文章涉及到“流關(guān)閉”、“連接關(guān)閉”的時候,經(jīng)常有人留言:“還寫技術(shù)文章,寫個流都不知道close()”,這種留言我遇到過無數(shù)回!
在本文中大量的使用到了try-with-resources語法,這個語法真的是很久的了,但是的確還有小伙伴不知道(知道的小伙伴就略過吧)。我還是說一下,下文中的管道流不是我沒close,是自動關(guān)閉close的。

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

1. Java 8 Files.newBufferedWriter

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

@Test
void testCreateFile1() throws IOException {
  String fileName = "D:\\data\\test\\newFile.txt";

  Path path = Paths.get(fileName);
  // 使用newBufferedWriter創(chuàng)建文件并寫文件
  // 這里使用了try-with-resources方法來關(guān)閉流,不用手動關(guān)閉
  try (BufferedWriter writer =
          Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
   writer.write("Hello World -創(chuàng)建文件!!");
  }

  //追加寫模式
  try (BufferedWriter writer =
        Files.newBufferedWriter(path,
            StandardCharsets.UTF_8,
            StandardOpenOption.APPEND)){
    writer.write("Hello World -字母哥!!");
  }
}

2. Java 7 Files.write

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

@Test
void testCreateFile2() throws IOException {
  String fileName = "D:\\data\\test\\newFile2.txt";

  // 從JDK1.7開始提供的方法
  // 使用Files.write創(chuàng)建一個文件并寫入
  Files.write(Paths.get(fileName),
        "Hello World -創(chuàng)建文件!!".getBytes(StandardCharsets.UTF_8));

  // 追加寫模式
  Files.write(
     Paths.get(fileName),
     "Hello World -字母哥!!".getBytes(StandardCharsets.UTF_8),
     StandardOpenOption.APPEND);
}

3. PrintWriter

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

@Test
void testCreateFile3() throws IOException {
  String fileName = "D:\\data\\test\\newFile3.txt";

  // JSD 1.5開始就已經(jīng)存在的方法
  try (PrintWriter writer = new PrintWriter(fileName, "UTF-8")) {
   writer.println("Hello World -創(chuàng)建文件!!");
   writer.println("Hello World -字母哥!!");
  }

  // Java 10進行了改進,支持使用StandardCharsets指定字符集
  /*try (PrintWriter writer = new PrintWriter(fileName, StandardCharsets.UTF_8)) {

   writer.println("first line!");
   writer.println("second line!");

  } */

}

4. File.createNewFile()

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

@Test
void testCreateFile4() throws IOException {
  String fileName = "D:\\data\\test\\newFile4.txt";

  File file = new File(fileName);

  // 返回true表示文件成功
  // false 表示文件已經(jīng)存在
  if (file.createNewFile()) {
   System.out.println("創(chuàng)建文件成功!");
  } else {
   System.out.println("文件已經(jīng)存在不需要重復(fù)創(chuàng)建");
  }

  // 使用FileWriter寫文件
  try (FileWriter writer = new FileWriter(file)) {
   writer.write("Hello World -創(chuàng)建文件!!");
  }

}

5.最原始的管道流方法

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

以上就是java中創(chuàng)建、寫入文件的5種方式的詳細內(nèi)容,更多關(guān)于Java 創(chuàng)建、寫入文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java簡單實現(xiàn)農(nóng)夫過河問題示例

    Java簡單實現(xiàn)農(nóng)夫過河問題示例

    這篇文章主要介紹了Java簡單實現(xiàn)農(nóng)夫過河問題,簡單描述了農(nóng)夫過河問題的概念、原理并結(jié)合簡單實例形式分析了java解決農(nóng)夫過河問題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • java8 LocalDate 使用詳解

    java8 LocalDate 使用詳解

    這篇文章主要介紹了java8 LocalDate 使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java內(nèi)部類原理、概述與用法實例詳解

    Java內(nèi)部類原理、概述與用法實例詳解

    這篇文章主要介紹了Java內(nèi)部類原理、概述與用法,結(jié)合實例形式詳細分析了Java內(nèi)部類的相關(guān)概念、原理、訪問、調(diào)用方法等操作技巧與注意事項,需要的朋友可以參考下
    2019-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)之順序表篇

    Java數(shù)據(jù)結(jié)構(gòu)之順序表篇

    順序表,全名順序存儲結(jié)構(gòu),是線性表的一種。線性表用于存儲邏輯關(guān)系為“一對一”的數(shù)據(jù),順序表自然也不例外,不僅如此,順序表對數(shù)據(jù)物理存儲結(jié)構(gòu)也有要求。順序表存儲數(shù)據(jù)時,會提前申請一整塊足夠大小的物理空間,然后將數(shù)據(jù)依次存儲起來,存儲時數(shù)據(jù)元素間不留縫隙
    2022-01-01
  • 必須要學(xué)會的JMM與volatile

    必須要學(xué)會的JMM與volatile

    這篇文章主要介紹了必須要學(xué)會的JMM與volatile,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 淺談MyBatis Plus主鍵設(shè)置策略

    淺談MyBatis Plus主鍵設(shè)置策略

    本文主要介紹了MyBatis Plus主鍵設(shè)置策略,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java利用InputStream類實現(xiàn)文件讀取與處理

    Java利用InputStream類實現(xiàn)文件讀取與處理

    在Java開發(fā)中,輸入流(InputStream)是一個非常重要的概念,它涉及到文件讀寫、網(wǎng)絡(luò)傳輸?shù)榷鄠€方面,InputStream類是Java中輸入流的抽象基類,定義了讀取輸入流數(shù)據(jù)的方法,本文將以InputStream類為切入點,介紹Java中的輸入流概念及其應(yīng)用,需要的朋友可以參考下
    2023-11-11
  • MyBatis增刪改查快速上手

    MyBatis增刪改查快速上手

    這篇文章給大家講解的是MyBatis 這門技術(shù)的 CURD (增刪改查) ,非常的詳細與實用,有需要的小伙伴可以參考下
    2020-02-02
  • 基于solr全文檢索實現(xiàn)原理(詳談)

    基于solr全文檢索實現(xiàn)原理(詳談)

    下面小編就為大家分享一篇基于solr全文檢索實現(xiàn)原理詳談,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • Springboot+AOP實現(xiàn)時間參數(shù)格式轉(zhuǎn)換

    Springboot+AOP實現(xiàn)時間參數(shù)格式轉(zhuǎn)換

    前端傳過來的時間參數(shù),后端可以自定義時間格式轉(zhuǎn)化使用,這樣想轉(zhuǎn)成什么就轉(zhuǎn)成什么。本文將利用自定義注解AOP實現(xiàn)時間參數(shù)格式轉(zhuǎn)換,感興趣的可以了解一下
    2022-04-04

最新評論

黔东| 威海市| 乾安县| 榆林市| 盱眙县| 巴中市| 菏泽市| 天门市| 宁海县| 河津市| 嘉黎县| 保康县| 汶川县| 张家口市| 乾安县| 玉田县| 祁东县| 耿马| 娄烦县| 南丹县| 车险| 沾化县| 资阳市| 刚察县| 嘉峪关市| 毕节市| 仁寿县| 辽宁省| 博客| 泸水县| 车致| 商南县| 海口市| 新密市| 集安市| 巴楚县| 张家界市| 凤阳县| 青河县| 龙海市| 天津市|