用 Java 编写文本文件的最简单方法是什么?



我想知道用Java编写文本文件的最简单(也是最简单的)方法是什么。请简单一点,因为我是初学者:D

我在网上搜索并找到了这段代码,但我理解了其中的 50%。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteToFileExample {
public static void main(String[] args) {
    try {
        String content = "This is the content to write into file";
        File file = new  File("C:/Users/Geroge/SkyDrive/Documents/inputFile.txt");
        // if file doesnt exists, then create it
        if (!file.exists()) {
            file.createNewFile();
        }
        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(content);
        bw.close();
        System.out.println("Done");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

对于 Java 7 及更高版本,使用文件的单行:

String text = "Text to save to file";
Files.write(Paths.get("./fileName.txt"), text.getBytes());
您可以使用

JAVA 7File API来执行此操作。

代码示例:`

public class FileWriter7 {
    public static void main(String[] args) throws IOException {
        List<String> lines = Arrays.asList(new String[] { "This is the content to write into file" });
        String filepath = "C:/Users/Geroge/SkyDrive/Documents/inputFile.txt";
        writeSmallTextFile(lines, filepath);
    }
    private static void writeSmallTextFile(List<String> aLines, String aFileName) throws IOException {
        Path path = Paths.get(aFileName);
        Files.write(path, aLines, StandardCharsets.UTF_8);
    }
}

'

您可以使用 Apache Commons 中的 FileUtils:

import org.apache.commons.io.FileUtils;
final File file = new File("test.txt");
FileUtils.writeStringToFile(file, "your content", StandardCharsets.UTF_8);

追加文件 FileWriter(String fileName, 布尔附加)

try {   // this is for monitoring runtime Exception within the block 
        String content = "This is the content to write into file"; // content to write into the file
        File file = new  File("C:/Users/Geroge/SkyDrive/Documents/inputFile.txt"); // here file not created here
        // if file doesnt exists, then create it
        if (!file.exists()) {   // checks whether the file is Exist or not
            file.createNewFile();   // here if file not exist new file created 
        }
        FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); // creating fileWriter object with the file
        BufferedWriter bw = new BufferedWriter(fw); // creating bufferWriter which is used to write the content into the file
        bw.write(content); // write method is used to write the given content into the file
        bw.close(); // Closes the stream, flushing it first. Once the stream has been closed, further write() or flush() invocations will cause an IOException to be thrown. Closing a previously closed stream has no effect. 
        System.out.println("Done");
    } catch (IOException e) { // if any exception occurs it will catch
        e.printStackTrace();
    }

你的代码是最简单的。但是,我总是尝试进一步优化代码。下面是一个示例。

try (BufferedWriter bw = new BufferedWriter(new FileWriter(new File("./output/output.txt")))) {
    bw.write("Hello, This is a test message");
    bw.close();
    }catch (FileNotFoundException ex) {
    System.out.println(ex.toString());
    }

Files.write() 正如 @Dilip Kumar 所说,简单的解决方案。我曾经使用这种方式,直到我遇到一个问题,不能影响行分隔符(Unix/Windows)CR LF。

所以现在我使用Java 8流文件编写方式,这让我可以即时操作内容:)。

List<String> lines = Arrays.asList(new String[] { "line1", "line2" });
Path path = Paths.get(fullFileName);
try (BufferedWriter writer = Files.newBufferedWriter(path)) {   
    writer.write(lines.stream()
                      .reduce((sum,currLine) ->  sum + "n"  + currLine)
                      .get());
}     

通过这种方式,我可以指定行分隔符,也可以执行任何类型的魔术,例如 TRIM、大写、过滤等。

String content = "your content here";
Path path = Paths.get("/data/output.txt");
if(!Files.exists(path)){
    Files.createFile(path);
}
BufferedWriter writer = Files.newBufferedWriter(path);
writer.write(content);

Java 11 或更高版本中,writeString可以从 java.nio.file.Files 中使用,

String content = "This is my content";
String fileName = "myFile.txt";
Files.writeString(Paths.get(fileName), content); 

带选项:

Files.writeString(Paths.get(fileName), content, StandardOpenOption.CREATE)

有关 java.nio.file.Files 和 StandardOpenOption 的更多文档

File file = new File("path/file.name");
IOUtils.write("content", new FileOutputStream(file));

IOUtils也可以用来用java 8轻松地写入/读取文件。

相关内容

  • 没有找到相关文章

最新更新