In Java, there are many ways to create and write to a file.

  1. Files.newBufferedWriter (Java 8)
  2. Files.write (Java 7)
  3. PrintWriter
  4. File.createNewFile

Note
I prefer the Java 7 nio Files.write to create and write to a file, because it has much cleaner code and auto close the opened resources.

  Files.write(
        Paths.get(fileName),
        data.getBytes(StandardCharsets.UTF_8));

1. Java 8 Files.newBufferedWriter

1.1 This example shows how to use the new Java 8 Files.newBufferedWriter to create and write to a file.

CreateFileJava8.java

package com.favtuts.io.file;

import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

public class CreateFileJava8 {
    
    public static void main(String[] args) {
        
        String fileName = "/home/tvt/workspace/favtuts/newFile.txt";

        Path path = Paths.get(fileName);
        
        // default, create, truncate and write to it.
        try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
            
            writer.write("Hello World !!");

        } catch (IOException e) {
            e.printStackTrace();
        }

        // Append mode.
        /*
        try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {

            writer.write("Hello World !!");
            
        } catch (IOException e) {
            e.printStackTrace();
        }*/
    }
}

2. Java 7 Files.write

2.1 This example shows how to use the Java 7 nio Files.write to create and write to a file.

By default, it opens a file for writing; create the file if it doesn’t exist; truncate the current content if the file exists.

CreateFileNio.java

package com.favtuts.io.file;

import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

public class CreateFileNio {

    public static void main(String[] args) {
        
        String fileName = "/home/tvt/workspace/favtuts/newFile.txt";
        String content = "Hello World";

        try {
            
            // Java 1.7
            // default, create and write to it.
            Files.write(Paths.get(fileName), content.getBytes(StandardCharsets.UTF_8));

            // Append content
            // Files.write(Paths.get(fileName), content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}

2.2 Review the Files.write. source code; it uses the try-with-resources to auto-close the opened resources.

Files.java

package java.nio.file;

  public final class Files {

      public static Path write(Path path, byte[] bytes, OpenOption... options)
            throws IOException
      {
          // ensure bytes is not null before opening file
          Objects.requireNonNull(bytes);

          try (OutputStream out = Files.newOutputStream(path, options)) {
              int len = bytes.length;
              int rem = len;
              while (rem > 0) {
                  int n = Math.min(rem, BUFFER_SIZE);
                  out.write(bytes, (len-rem), n);
                  rem -= n;
              }
          }
          return path;
      }

      //...
  }

3. PrintWriter

3.1 This example shows how to use PrintWriter to create and write to a file.

CreateFile.java

package com.favtuts.io.file;

import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;

public class CreateFile {
    
    public static void main(String[] args) {
        
        String fileName = "/home/tvt/workspace/favtuts/newFile.txt";

        // Java 10, new constructor, support Charsets
        try (PrintWriter writer = new PrintWriter(fileName, StandardCharsets.UTF_8)) {

            writer.println("first line!");
            writer.println("second line!");
            
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Java 1.5
        /*
        try (PrintWriter writer = new PrintWriter(fileName, "UTF-8")) {
            
            writer.println("first line!");
            writer.println("second line!");
            
        } catch (IOException e) {
            e.printStackTrace();
        }*/
    }
}

4. File.createNewFile()

4.1 This example shows how to use the File.createNewFile() to create an empty file, and the FileWriter to write data to the file.

CreateFile2.java

package com.favtuts.io.file;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class CreateFile2 {

    public static void main(String[] args) {
        
        String fileName = "/home/tvt/workspace/favtuts/newFile.txt";

        try {

            File file = new File(fileName);

            // true if file does no exist and was created successfully.
            // false if file is already exists
            if (file.createNewFile()) {
                System.out.println("File is created!");
            } else {
                System.out.println("File already exists.");
            }

            // Write to file
            try (FileWriter writer = new FileWriter(file)) {
                writer.write("Hello World!");
            }

            // Append mode
            // try (FileWriter writer = new FileWriter(file, true)) {
            //     writer.write("Hello World!");
            // }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
}

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-io

References

Leave a Reply

Your email address will not be published. Required fields are marked *