欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

前提小知識(shí)

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

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

1. Java 8 Files.newBufferedWriter

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

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

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

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

2. Java 7 Files.write

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

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

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

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

3. PrintWriter

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

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

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

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

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

  } */

}

4. File.createNewFile()

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

@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寫(xiě)文件
  try (FileWriter writer = new FileWriter(file)) {
   writer.write("Hello World -創(chuàng)建文件!!");
  }

}

5.最原始的管道流方法

最原始的方式就是使用管道流嵌套的方法,但是筆者覺(jué)得這種方法歷久彌新,使用起來(lái)非常靈活。你想去加上Buffer緩沖,你就嵌套一個(gè)BufferedWriter,你想去向文件中寫(xiě)java對(duì)象你就嵌套一個(gè)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)建、寫(xiě)入文件的5種方式的詳細(xì)內(nèi)容,更多關(guān)于Java 創(chuàng)建、寫(xiě)入文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Springboot實(shí)現(xiàn)郵箱驗(yàn)證代碼實(shí)例

    Springboot實(shí)現(xiàn)郵箱驗(yàn)證代碼實(shí)例

    這篇文章主要介紹了Springboot實(shí)現(xiàn)郵箱驗(yàn)證代碼實(shí)例,在一些業(yè)務(wù)需求中我們經(jīng)常需要使用郵箱進(jìn)行驗(yàn)證碼的收取,本文通過(guò)簡(jiǎn)單的代碼實(shí)例來(lái)說(shuō)明,需要的朋友可以參考下
    2024-01-01
  • 數(shù)據(jù)結(jié)構(gòu)與算法之并查集(不相交集合)

    數(shù)據(jù)結(jié)構(gòu)與算法之并查集(不相交集合)

    并查集是一種挺高效的數(shù)據(jù)結(jié)構(gòu)。實(shí)現(xiàn)簡(jiǎn)單,只是所有元素統(tǒng)一遵從一個(gè)規(guī)律所以讓辦事情的效率高效起來(lái)。這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)與算法——并查集(不相交集合),需要的朋友可以參考下
    2019-11-11
  • idea使用war以及war exploded的區(qū)別說(shuō)明

    idea使用war以及war exploded的區(qū)別說(shuō)明

    本文詳細(xì)解析了war與warexploded兩種部署方式的差異及步驟,war方式是先打包成war包,再部署到服務(wù)器上;warexploded方式是直接把文件夾、class文件等移到Tomcat上部署,支持熱部署,開(kāi)發(fā)時(shí)常用,文章分別列出了warexploded模式和war包形式的具體操作步驟
    2024-10-10
  • SpringSecurity?表單登錄的實(shí)現(xiàn)

    SpringSecurity?表單登錄的實(shí)現(xiàn)

    本文主要介紹了SpringSecurity?表單登錄的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • java 的Collection接口實(shí)例詳解

    java 的Collection接口實(shí)例詳解

    本文主要介紹java 中的Collection接口框架知識(shí),并附實(shí)例代碼供大家學(xué)習(xí)參考,希望能幫助有需要的小伙伴
    2016-07-07
  • 把spring boot項(xiàng)目發(fā)布tomcat容器(包含發(fā)布到tomcat6的方法)

    把spring boot項(xiàng)目發(fā)布tomcat容器(包含發(fā)布到tomcat6的方法)

    這篇文章主要介紹了把spring boot項(xiàng)目發(fā)布tomcat容器(包含發(fā)布到tomcat6的方法),然后在文章給大家提到了如何將Spring Boot項(xiàng)目打包部署到外部Tomcat,需要的朋友參考下吧
    2017-11-11
  • Java讀取properties配置文件時(shí),出現(xiàn)中文亂碼的解決方法

    Java讀取properties配置文件時(shí),出現(xiàn)中文亂碼的解決方法

    下面小編就為大家?guī)?lái)一篇Java讀取properties配置文件時(shí),出現(xiàn)中文亂碼的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 詳解Idea SpringBoot搭建SpringCloud的準(zhǔn)備工作(推薦)

    詳解Idea SpringBoot搭建SpringCloud的準(zhǔn)備工作(推薦)

    這篇文章主要介紹了Idea SpringBoot搭建SpringCloud的準(zhǔn)備工作(推薦),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Shiro整合Springboot和redis,jwt過(guò)程中的錯(cuò)誤shiroFilterChainDefinition問(wèn)題

    Shiro整合Springboot和redis,jwt過(guò)程中的錯(cuò)誤shiroFilterChainDefinition問(wèn)

    這篇文章主要介紹了Shiro整合Springboot和redis,jwt過(guò)程中的錯(cuò)誤shiroFilterChainDefinition問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • JDBC建立數(shù)據(jù)庫(kù)連接的代碼

    JDBC建立數(shù)據(jù)庫(kù)連接的代碼

    這篇文章主要為大家詳細(xì)介紹了JDBC建立數(shù)據(jù)庫(kù)連接的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評(píng)論