# Java – 创建新文件

> 原文： [https://howtodoinjava.com/java/io/how-to-create-a-new-file-in-java/](https://howtodoinjava.com/java/io/how-to-create-a-new-file-in-java/)

**用 Java** 创建一个新文件是非常容易的任务。 我们大多数人都知道这一点。 让我们列出**三种为初学者创建新文件**的方法。 如果您知道，请在评论部分添加更多方法。 我将在帖子中包含它们。

> 阅读更多：[创建只读文件](https://howtodoinjava.com/java/io/how-to-make-a-file-read-only-in-java/)

## 1\. 使用`java.io.File`类创建文件

使用[`File.createNewFile()`](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#createNewFile())方法创建新文件。 此方法返回布尔值：

*   `true`如果文件创建成功。
*   `false`如果文件已经存在或由于某种原因操作失败。

请注意，此方法将**仅创建文件**，但**不会向其中写入任何内容**。

```java
File file = new File("c://temp//testFile1.txt");

//Create the file
if (file.createNewFile())
{
    System.out.println("File is created!");
} else {
    System.out.println("File already exists.");
}

//Write Content
FileWriter writer = new FileWriter(file);
writer.write("Test data");
writer.close();

```

## 2）使用`java.io.FileOutputStream`类创建文件

[`FileOutputStream.write()`](https://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html#write(byte[]))方法自动**创建一个新文件并向其中写入内容**。

```java
String data = "Test data";

FileOutputStream out = new FileOutputStream("c://temp//testFile2.txt");

out.write(data.getBytes());
out.close();

```

## 3）使用`java.nio.file.Files`创建文件 – Java NIO

[`Files.write()`](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#write(java.nio.file.Path,%20java.lang.Iterable,%20java.nio.charset.Charset,%20java.nio.file.OpenOption...))是**创建文件**的最佳方法，如果您尚未使用它，则应该是将来的首选方法。

此方法**将文本行写入文件**中。 每行都是一个`char`序列，并按顺序写入文件，每行由平台的*行分隔符*终止。

#### 语法

```java
/**
* @param   path 	- the path to the file
* @param   lines 	- an object to iterate over the char sequences
* @param   cs 		- the charset to use for encoding
* @param   options 	- options specifying how the file is opened
*
* @return  the path of new created file
*/

public static Path write(Path path,
     Iterable<? extends CharSequence> lines,
     Charset cs,
     OpenOption... options) throws IOException
```

#### `Files.write()`示例

```java
String data = "Test data";
Files.write(Paths.get("c://temp//testFile3.txt"), data.getBytes());

//or

List<String> lines = Arrays.asList("1st line", "2nd line");

Files.write(Paths.get("file6.txt"), 
				lines, 
				StandardCharsets.UTF_8,
				StandardOpenOption.CREATE, 
				StandardOpenOption.APPEND);

```

## 使用 Java 创建新文件的所有示例

```java
package com.howtodoinjava.examples.io;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.List;

public class CreateNewFile 
{
    public static void main(String[] args) throws IOException 
    {
        createFileUsingFileClass();
        createFileUsingFileOutputStreamClass();
        createFileIn_NIO();
    }

    private static void createFileUsingFileClass() throws IOException 
    { 
          File file = new File("c://temp//testFile1.txt");

          //Create the file
          if (file.createNewFile()){
            System.out.println("File is created!");
          }else{
            System.out.println("File already exists.");
          }

          //Write Content
          FileWriter writer = new FileWriter(file);
          writer.write("Test data");
          writer.close();
    }

    private static void createFileUsingFileOutputStreamClass() throws IOException 
    {
        String data = "Test data";
        FileOutputStream out = new FileOutputStream("c://temp//testFile2.txt");
        out.write(data.getBytes());
        out.close();
    }

    private static void createFileIn_NIO()  throws IOException 
    {
        String data = "Test data";
        Files.write(Paths.get("c://temp//testFile3.txt"), data.getBytes());

        //or

        List<String> lines = Arrays.asList("1st line", "2nd line");

        Files.write(Paths.get("file6.txt"), 
                    lines, 
                    StandardCharsets.UTF_8,
                    StandardOpenOption.CREATE, 
                    StandardOpenOption.APPEND);
    }
}

```

学习愉快！