codestory

Die Anleitung zu Java FileWriter

  1. FileWriter
  2. Examples

1. FileWriter

FileWriter ist eine Unterklasse von OutputStreamWriter, es wird zum Schreiben der Textdatei benutzt.
FileWriter hat keine Methoden mehr außer der von OutputStreamWriter geerbten Methoden. Tatsächlich können Sie OutputStreamWriter verwenden um die Zeichen in ein beliebiges Ziel zu schreiben. FileWriter wird allerdings speziell zum Schreiben der Zeichen in die Systemdatei entwickelt.
FileWriter​ constructors
FileWriter​(File file)     
 
FileWriter​(FileDescriptor fd)     

FileWriter​(File file, boolean append)     

FileWriter​(File file, Charset charset)     

FileWriter​(File file, Charset charset, boolean append)     
 
FileWriter​(String fileName)     

FileWriter​(String fileName, boolean append)     

FileWriter​(String fileName, Charset charset)     

FileWriter​(String fileName, Charset charset, boolean append)
Hinweis: Die Konstruktor mit dem Parameter Charset wurden FileWriter ab der Version Java 11 hinzugefügt. Wenn Sie früheres Java und eine Datei mit der bestimmten Kodierung schreiben möchten, verwenden Sie die Klasse OutputStreamWriter zu ersetzen.

2. Examples

FileWriterEx1.java
package org.o7planning.filewriter.ex;

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

public class FileWriterEx1 {

    public static void main(String[] args) throws IOException {
        // Windows: C:/SomeFolder/out-file.txt
        File outFile = new File("/Volumes/Data/test/out-file.txt");
        
        outFile.getParentFile().mkdirs();
        
        FileWriter fileWriter = new FileWriter(outFile);
        
        System.out.println("Writer file: " + outFile.getAbsolutePath());
        System.out.println("With encoding: " + fileWriter.getEncoding());

        fileWriter.write("Line 1");
        fileWriter.write("\n");
        fileWriter.write("Line 2");
        fileWriter.write("\n");
        fileWriter.write("Line 3");

        fileWriter.close();
    }
}
Output:
out-file.txt
Line 1
Line 2
Line 3
Mit FileWriter können Sie die Datei in eine vorhandene Datei schreiben. Wenn die Datei existiert nicht, wird sie erstellt.
FileWriterEx2.java
package org.o7planning.filewriter.ex;

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

public class FileWriterEx2 {

    public static void main(String[] args) throws IOException {
        // Windows: C:/SomeFolder/out-file.txt
        File outFile = new File("/Volumes/Data/test/out-file.txt");
        
        outFile.getParentFile().mkdirs();
        
        // FileWriter(File outFile, boolean append)
        FileWriter fileWriter = new FileWriter(outFile, true);
        
        System.out.println("Writer file: " + outFile.getAbsolutePath());
        System.out.println("With encoding: " + fileWriter.getEncoding());

        fileWriter.write("Line 4");
        fileWriter.write("\n");
        fileWriter.append("Line 5").append("\n");
        fileWriter.close();
    }
}
Z.B: Verwenden Sie FileWriter um eine Datei mit UTF-16 zu schreiben, dann lesen Sie die mit FileInputStream neue geschriebene Datei um die bytes in der Datei anzuzeigen.
FileWriter_UTF16_Ex1.java
package org.o7planning.filewriter.ex;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class FileWriter_UTF16_Ex1 {
    // Windows: C:/SomeFolder/out-utf16-file.txt
    private static final String filePath = "/Volumes/Data/test/out-utf16-file.txt";

    public static void main(String[] args) throws IOException {
        System.out.println("--- Write UTF-16 File ---");
        write_UTF16_File();
        
        System.out.println("--- Read File as Binary Stream ---");
        readAsInputStream();
    }

    private static void write_UTF16_File() throws IOException {
        File outFile = new File(filePath);
        outFile.getParentFile().mkdirs();

        // FileWriter(File outFile, boolean append)
        FileWriter fileWriter = new FileWriter(outFile, StandardCharsets.UTF_16);
        fileWriter.write("JP日本-八洲");
        fileWriter.close();
    }

    private static void readAsInputStream() throws IOException {
        File file = new File(filePath);

        FileInputStream fis = new FileInputStream(file);

        int byteCode;
        while ((byteCode = fis.read()) != -1) {
            System.out.println((char) byteCode + " " + byteCode);
        }
        fis.close();
    }
}
Output:
--- Write UTF-16 File ---
--- Read File as Binary Stream ---
þ 254
ÿ 255
0
J 74
0
P 80
e 101
å 229
g 103
, 44
0
- 45
Q 81
k 107
m 109
2 50
Unten finden Sie eine Abbildung von bytes im FileWriter und bytes in der von FileWriter geschriebenen Datei:
Die zwei ersten bytes(254,255) in die Datei UTF-16 wird verwendet um zu markieren, dass sie mit einer von UTF-16 kodierten Datei beginnt.
Sie können meine weiteren Artikels über InputStreamReader und OutputStreamWriter lesen um detailiert zu erfahren, wie Java die Kodierungen UTF-16 und UTF-8 liest und schreibt.

Die Anleitungen Java IO

Show More