Java写入文件详解:4种常用方法与最佳实践

这是文章《Java 写入文件 – 在Java中写入文件的4种方法》的第1部分(共1部分)。

内容片段: Java提供了几种方法来写入文件。我们可以使用FileWriter、BufferedWriter、Java 7的Files和FileOutputStream来在Java中写入文件。

用Java将内容写入文件

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

Java写入文件的四种方法

  1. FileWriter:FileWriter是Java中写文件最简单的方式。它提供了重载的write方法,可以向文件写入int、byte数组和字符串。您还可以使用FileWriter写入字符串或字节数组的部分内容。FileWriter直接将数据写入文件中,只有在写入次数较少时才应使用它。
  2. BufferedWriter:BufferedWriter与FileWriter几乎相似,但它使用内部缓冲区来写入数据到文件中。因此,如果写入操作较多,实际的IO操作将减少,性能会更好。当写入操作较多时,应使用BufferedWriter。
  3. FileOutputStream:FileWriter和BufferedWriter用于向文件写入文本,但是当需要将原始流数据写入文件时,应使用FileOutputStream来在Java中写文件。
  4. Files:Java 7引入了Files实用类,可以使用其write函数写入文件。在内部,它使用OutputStream将字节数组写入文件中。

Java 写入文件示例

以下是展示如何使用Java中的FileWriter、BufferedWriter、FileOutputStream和Files来编写文件的示例。文件名:WriteFile.java

package com.Olivia.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 {

    /**
     * 这个类展示了如何在Java中写入文件
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) {
        String data = "我将把这个字符串写入Java文件中";
        int noOfLines = 10000;
        writeUsingFileWriter(data);
        
        writeUsingBufferedWriter(data, noOfLines);
        
        writeUsingFiles(data);
        
        writeUsingOutputStream(data);
        System.out.println("完成");
    }

    /**
     * 当处理原始数据时使用流
     * @param data
     */
    private static void writeUsingOutputStream(String data) {
        OutputStream os = null;
        try {
            os = new FileOutputStream(new File("/Users/scdev/os.txt"));
            os.write(data.getBytes(), 0, data.length());
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 使用Java 1.7中的Files类写入文件,内部使用OutputStream
     * @param data
     */
    private static void writeUsingFiles(String data) {
        try {
            Files.write(Paths.get("/Users/scdev/files.txt"), data.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 当写入操作较多时使用BufferedWriter
     * 它使用内部缓冲区来减少实际IO操作并节省时间
     * @param data
     * @param noOfLines
     */
    private static void writeUsingBufferedWriter(String data, int noOfLines) {
        File file = new File("/Users/scdev/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();
            }
        }
    }

    /**
     * 当写入操作较少时使用FileWriter
     * @param data
     */
    private static void writeUsingFileWriter(String data) {
        File file = new File("/Users/scdev/FileWriter.txt");
        FileWriter fr = null;
        try {
            fr = new FileWriter(file);
            fr.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            //关闭资源
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

以下是在Java中写入文件的标准方法,根据您的项目需求可选择其中一种。这就是Java写入文件示例的全部内容。

您可以从我们的GitHub存储库中查看更多的Java IO示例。

bannerAds