我如何创建一个文件并在Java中写入文件?

用Java创建和写入(文本)文件的最简单方法是什么?


请注意,下面的每个代码示例可能会抛出IOException 。 为简洁起见,try / catch / finally块已被省略。 有关异常处理的信息,请参阅本教程。

创建一个文本文件(注意,如果文件已存在,将覆盖该文件):

PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");
writer.println("The first line");
writer.println("The second line");
writer.close();

创建一个二进制文件(这也将覆盖文件):

byte data[] = ...
FileOutputStream out = new FileOutputStream("the-file-name");
out.write(data);
out.close();

Java 7+用户可以使用Files类来写入文件:

创建一个文本文件:

List<String> lines = Arrays.asList("The first line", "The second line");
Path file = Paths.get("the-file-name.txt");
Files.write(file, lines, Charset.forName("UTF-8"));
//Files.write(file, lines, Charset.forName("UTF-8"), StandardOpenOption.APPEND);

创建一个二进制文件:

byte data[] = ...
Path file = Paths.get("the-file-name");
Files.write(file, data);
//Files.write(file, data, StandardOpenOption.APPEND);

在Java 7及更高版本中:

try (Writer writer = new BufferedWriter(new OutputStreamWriter(
              new FileOutputStream("filename.txt"), "utf-8"))) {
   writer.write("something");
}

虽然有一些有用的工具:

  • 来自commons-io的FileUtils.writeStringtoFile(..)
  • Files.write(..)来自番石榴
  • 还要注意你可以使用FileWriter ,但它使用默认编码,这通常是一个坏主意 - 最好是明确指定编码。

    以下是Java 7之前的原始答案


    Writer writer = null;
    
    try {
        writer = new BufferedWriter(new OutputStreamWriter(
              new FileOutputStream("filename.txt"), "utf-8"));
        writer.write("Something");
    } catch (IOException ex) {
        // Report
    } finally {
       try {writer.close();} catch (Exception ex) {/*ignore*/}
    }
    

    另请参阅:读取,写入和创建文件(包括NIO2)。


    如果您已经拥有想要写入文件的内容(并且不是即时生成的),Java 7中作为本机I / O一部分的java.nio.file.Files添加提供了实现最简单和最有效的方式你的目标。

    基本上创建和写入文件只有一行,而且只需一个简单的方法调用

    以下示例创建并写入6个不同的文件以展示如何使用它:

    Charset utf8 = StandardCharsets.UTF_8;
    List<String> lines = Arrays.asList("1st line", "2nd line");
    byte[] data = {1, 2, 3, 4, 5};
    
    try {
        Files.write(Paths.get("file1.bin"), data);
        Files.write(Paths.get("file2.bin"), data,
                StandardOpenOption.CREATE, StandardOpenOption.APPEND);
        Files.write(Paths.get("file3.txt"), "content".getBytes());
        Files.write(Paths.get("file4.txt"), "content".getBytes(utf8));
        Files.write(Paths.get("file5.txt"), lines, utf8);
        Files.write(Paths.get("file6.txt"), lines, utf8,
                StandardOpenOption.CREATE, StandardOpenOption.APPEND);
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    链接地址: http://www.djcxy.com/p/15181.html

    上一篇: How do I create a file and write to it in Java?

    下一篇: How can I measure time with microsecond precision in Java?