Руководство Java FileWriter
1. FileWriter
FileWriter - это подкласс OutputStreamWriter, используемый для записи текстовых файлов.
FileWriter не имеет других методов, кроме тех, которые унаследованы от OutputStreamWriter. На самом деле вы можете использовать OutputStreamWriter для записи символов для любой цели. Однако FileWriter специально разработан для записи символов в системный файл.
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)
Примечание: Конструкторы с параметром Charset были добавлены в FileWriter, начиная с версии Java 11. Поэтому, если вы используете раннюю версию Java и хотите написать файл с указанной кодировкой (encoding), используйте класс OutputStreamWriter для замены.
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
FileWriter также позволяет добавлять данные в существующий файл, если файл не существует, он будет создан.
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();
}
}
Например, используйте FileWriter для записи файла с кодировкой UTF-16, а затем прочитайте файл с помощью FileInputStream для просмотра bytes в файле.
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
Ниже приведена иллюстрация bytes на FileWriter и bytes в файле, только что написанном FileWriter:
Первые два bytes (254, 255) в файле UTF-16 используются для обозначения того, что он запускает данные в кодировке UTF-16.
Ознакомьтесь с моими статьями о InputStreamReader и OutputStreamWriter, чтобы узнать больше о том, как Java читает и записывает кодировки UTF-16 и UTF-8.
Руководства Java IO
- Руководство Java CharArrayWriter
- Руководство Java FilterReader
- Руководство Java FilterWriter
- Руководство Java PrintStream
- Руководство Java BufferedReader
- Руководство Java BufferedWriter
- Руководство Java StringReader
- Руководство Java StringWriter
- Руководство Java PipedReader
- Руководство Java LineNumberReader
- Руководство Java PushbackReader
- Руководство Java PrintWriter
- Руководство Java IO Binary Streams
- Руководство Java IO Character Streams
- Руководство Java BufferedOutputStream
- Руководство Java ByteArrayOutputStream
- Руководство Java DataOutputStream
- Руководство Java PipedInputStream
- Руководство Java OutputStream
- Руководство Java ObjectOutputStream
- Руководство Java PushbackInputStream
- Руководство Java SequenceInputStream
- Руководство Java BufferedInputStream
- Руководство Java Reader
- Руководство Java Writer
- Руководство Java FileReader
- Руководство Java FileWriter
- Руководство Java CharArrayReader
- Руководство Java ByteArrayInputStream
- Руководство Java DataInputStream
- Руководство Java ObjectInputStream
- Руководство Java InputStreamReader
- Руководство Java OutputStreamWriter
- Руководство Java InputStream
- Руководство Java FileInputStream
Show More