Java写入文件–用Java写入文件的4种方法

时间:2020-02-23 14:37:00  来源:igfitidea点击:

Java提供了几种写入文件的方式。
我们可以使用FileWriter,BufferedWriter,java 7 Files和FileOutputStream用Java编写文件。

Java写入文件

让我们简要看一下Java写入文件操作的四个选项。

  • FileWriter:FileWriter是用Java编写文件的最简单方法。
    它提供了重载的write方法,可以将int,字节数组和String写入File。
    您也可以使用FileWriter编写String或者byte数组的一部分。
    FileWriter直接写入文件,仅在写入次数较少时才应使用。

  • BufferedWriter:BufferedWriter与FileWriter几乎相似,但是它使用内部缓冲区将数据写入File。
    因此,如果写入操作的数量更多,则实际的IO操作会更少,而性能会更好。
    当写入操作的数量更多时,应使用BufferedWriter。

  • FileOutputStream:FileWriter和BufferedWriter旨在将文本写入文件,但是当您需要将原始流数据写入文件时,应使用FileOutputStream在Java中写入文件。

  • 文件:Java 7引入了文件实用程序类,我们可以使用其写入功能来写入文件。
    在内部,它使用OutputStream将字节数组写入文件。

Java写入文件示例

这是显示如何在Java中使用FileWriter,BufferedWriter,FileOutputStream和Files编写文件的示例。

WriteFile.java

package com.theitroad.files;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

public class WriteFile {

  /**
   * This class shows how to write file in java
   * @param args
   * @throws IOException 
   */
  public static void main(String[] args) {
      String data = "I will write this String to File in Java";
      int noOfLines = 10000;
      writeUsingFileWriter(data);
      
      writeUsingBufferedWriter(data, noOfLines);
      
      writeUsingFiles(data);
      
      writeUsingOutputStream(data);
      System.out.println("DONE");
  }

  /**
   * Use Streams when you are dealing with raw data
   * @param data
   */
  private static void writeUsingOutputStream(String data) {
      OutputStream os = null;
      try {
          os = new FileOutputStream(new File("/Users/hyman/os.txt"));
          os.write(data.getBytes(), 0, data.length());
      } catch (IOException e) {
          e.printStackTrace();
      }finally{
          try {
              os.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }
  
  /**
   * Use Files class from Java 1.7 to write files, internally uses OutputStream
   * @param data
   */
  private static void writeUsingFiles(String data) {
      try {
          Files.write(Paths.get("/Users/hyman/files.txt"), data.getBytes());
      } catch (IOException e) {
          e.printStackTrace();
      }
  }

  /**
   * Use BufferedWriter when number of write operations are more
   * It uses internal buffer to reduce real IO operations and saves time
   * @param data
   * @param noOfLines
   */
  private static void writeUsingBufferedWriter(String data, int noOfLines) {
      File file = new File("/Users/hyman/BufferedWriter.txt");
      FileWriter fr = null;
      BufferedWriter br = null;
      String dataWithNewLine=data+System.getProperty("line.separator");
      try{
          fr = new FileWriter(file);
          br = new BufferedWriter(fr);
          for(int i = noOfLines; i>0; i--){
              br.write(dataWithNewLine);
          }
      } catch (IOException e) {
          e.printStackTrace();
      }finally{
          try {
              br.close();
              fr.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }

  /**
   * Use FileWriter when number of write operations are less
   * @param data
   */
  private static void writeUsingFileWriter(String data) {
      File file = new File("/Users/hyman/FileWriter.txt");
      FileWriter fr = null;
      try {
          fr = new FileWriter(file);
          fr.write(data);
      } catch (IOException e) {
          e.printStackTrace();
      }finally{
          //close resources
          try {
              fr.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }

}

这些是用Java编写文件的标准方法,您应根据项目要求选择其中一种。