Die Anleitung zu Java Writer
1. Writer
Writer ist eine Klasse im Paket java.io. Es ist eine Basisklasse, die einen Zeichenstrom(stream of characters) darstellt, um die Zeichen in ein Ziel zu schreiben, z.B eine Textdatei.
public abstract class Writer implements Appendable, Closeable, Flushable
Grundsätzlich können Sie die Klasse Writer nicht direkt verwenden, da es sich um eine abstrakte Klasse handelt. In einem bestimmten Fall können Sie jedoch eine der Unterklassen verwenden.
Stellen Sie sich ein Szenario vor, in dem die folgenden Zeichen in eine Datei mit der Code UTF-8 geschrieben werden:
JP日本-八洲
Java verwendet 2 bytes zum Speichern eines Zeichen. Hier ist eine Darstellung der bytes des oben genannten Textes:
FileWriter ist eine Unterklasse der Writer, die häufig zum Schreiben von Zeichen in eine Textdatei verwendet wird. Jedes Zeichen in Writer sind 2 bytes. Wenn Sie jedoch in eine Textdatei UTF-8 schreiben, kann jedes Zeichen mit 1, 2, 3 oder 4 bytes gespeichert werden.
Sehen Sie auch meine Erklärung, wie Java die Zeichen Java in die Zeichen UTF-8 konvertiert:
Writer methods
public static Writer nullWriter()
public void write(int c) throws IOException
public void write(char cbuf[]) throws IOException
public void write(char cbuf[], int off, int len) throws IOException
public void write(String str) throws IOException
public void write(String str, int off, int len) throws IOException
public Writer append(CharSequence csq) throws IOException
public Writer append(CharSequence csq, int start, int end) throws IOException
public Writer append(char c) throws IOException
public void flush() throws IOException
public void close() throws IOException
2. write(int)
public void write(int chr) throws IOException
Schreiben Sie ein Zeichen an Writer. Der Parameter chr ist der Code des Zeichens, bei dem es sich um einen Integer zwischen 0 und 65535. Wenn der Wert von chr außerhalb des obigen Bereichs liegt, wird er ignoriert.
Writer_write_ex1.java
package org.o7planning.writer.ex;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
public class Writer_write_ex1 {
// Windows path: C:/Somedirectory/out-file.txt
private static final String file_path = "/Volumes/Data/test/out-file.txt";
public static void main(String[] args) throws IOException {
File file = new File(file_path);
// Create parent folder:
file.getParentFile().mkdirs();
// FileWriter constructor in Java 11.
Writer writer = new FileWriter(file, StandardCharsets.UTF_8);
writer.write((int)'J'); // 74
writer.write((int)'P'); // 80
writer.write((int)'日'); // 26085
writer.write(26412); // 本
writer.write((int)'-'); // 45
writer.write(20843); // 八
writer.write((int)'洲'); // 27954
writer.close();
}
}
Output:
out-file.txt
JP日本-八洲
3. write(char[])
public void write(char[] cbuf) throws IOException
Schreiben Sie ein Zeichenarrray in Writer.
Writer_write_ex2.java
package org.o7planning.writer.ex;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
public class Writer_write_ex2 {
// Windows path: C:/Somedirectory/out-file.txt
private static final String file_path = "/Volumes/Data/test/out-file.txt";
public static void main(String[] args) throws IOException {
File file = new File(file_path);
// Create parent folder:
file.getParentFile().mkdirs();
// FileWriter constructor in Java 11.
Writer writer = new FileWriter(file, StandardCharsets.UTF_8);
writer.write((int)'J'); // 74
char[] cbuf = new char[] {'P', '日', '本', '-', '八', '洲'};
writer.write(cbuf);
writer.close();
}
}
Output:
out-file.txt
JP日本-八洲
4. write(char[], int, int)
public void write(char[] cbuf, int off, int len) throws IOException
Schreiben Sie einen Teil eines Zeichenarrays in Writer. Schreiben Sie die Zeichen von Index offset bis zu Index offset+len.
Writer_write_ex3.java
package org.o7planning.writer.ex;
import java.io.IOException;
import java.io.StringWriter;
public class Writer_write_ex3 {
public static void main(String[] args) throws IOException {
// StringWriter is a subclass of Writer.
StringWriter stringWriter = new StringWriter();
char[] cbuf = new char[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
stringWriter.write(cbuf, 2, 5); // '2', ...'6'
String s = stringWriter.toString();
System.out.println(s);
stringWriter.close();
}
}
Output:
23456
5. close()
public void close() throws IOException
Die Methode close() wird verwendet, um diesen Stream zu schließen. Die Methode flush() wird zuerst aufgerufen. Sobald der Stream geschlossen wurde, führen die Aufrufe von write() oder flush() dazu, dass eine IOException ausgelöst wird. Das Schließen eines vorher geschlossenen Streams hat keine Auswirkung.
public interface Closeable extends AutoCloseable
Die Klasse Writer implementiert die Interface Closeable. Wenn Sie die Code nach den Regeln von AutoCloseable schreiben, schließt das Stream automatisch für Sie, ohne die Methode close() direkt aufrufen zu müssen.
Writer_close_ex1.java
package org.o7planning.writer.ex;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
public class Writer_close_ex1 {
// Windows path: C:/Somedirectory/out-file.txt
private static final String file_path = "/Volumes/Data/test/out-file.txt";
public static void main(String[] args) throws IOException {
File file = new File(file_path);
// Create parent folder:
file.getParentFile().mkdirs();
try (Writer writer = new FileWriter(file, StandardCharsets.UTF_8)) {
writer.write((int) 'J'); // 74
writer.write((int) 'P'); // 80
writer.write((int) '日'); // 26085
writer.write(26412); // 本
writer.write((int) '-'); // 45
writer.write(20843); // 八
writer.write((int) '洲'); // 27954
}
}
}
- Die Anleitung zu Java Closeable
6. write(String)
public void write(String str) throws IOException
Schreiben Sie ein String an Writer.
Zum Beispiel:
writer.write("Some String");
7. write(String, int, int)
public void write(String str, int offset, int len) throws IOException
Schreiben Sie einen Teil eines String an Writer. Schreiben Sie die Zeichen von Index offset zu Index offset+len zum Writer.
Zum Beispiel:
writer.write("0123456789", 2, 5); // 23456
8. append(CharSequence)
public Writer append(CharSequence csq) throws IOException
Hängen Sie die Zeichen von CharSequence an Writer an. Diese Methode gibt das aktuelle Objekt Writer zurück, mit dem Sie eine andere Methode Writer aufrufen können, anstatt mit einem Semikolon ( ; ) zu enden.
Writer_append_ex1.java
package org.o7planning.writer.ex;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
public class Writer_append_ex1 {
public static void main(String[] args) throws IOException {
// StringWriter is a subclass of Writer.
Writer writer = new StringWriter();
writer.append("01234").append("5678").write("9");
System.out.println(writer.toString()); // 0123456789
writer.close();
}
}
9. append(CharSequence, int , int)
public Writer append(CharSequence csq, int start, int end) throws IOException
Hängen Sie einen Teil von CharSequence an Writer an. Diese Methode gibt das aktuelle Objekt Writer zurück.
10. append(char)
public Writer append(char chr) throws IOException
Hängen Sie einen Zeichen an Writer an. Diese Methode gibt das aktuelle Objekt Writer zurück, mit dem Sie eine andere Methode von Writer aufrufen können, anstatt mit dem Semikolon ( ; ) zu enden.
Writer_append_ex2.java
package org.o7planning.writer.ex;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
public class Writer_append_ex2 {
public static void main(String[] args) throws IOException {
Writer writer = new StringWriter();
writer.append('J').append('P').append('日').append('本');
System.out.println(writer.toString()); // JP日本
writer.close();
}
}
11. flush()
public void flush() throws IOException
Die Daten, die Sie in Writer schreiben, werden manchmal vorläufig in einem Puffer gespeichert. Die Methode flush() wird verwendet, um die gesamten Daten im Puffer in das Ziel zu leeren.
Sie können den folgenden Artikel über BufferedWriter lesen, um mehr über die Methode flush() zu erfahren.
Wenn das beabsichtigte Ziel dieses Writer eine vom zugrunde liegende Betriebssystem bereitsgestellte Abstraktion ist, z.B eine Datei, garantiert das Leeren des Streams nur, dass zuvor in den Stream geschriebene Zeichen zum Schreiben an das Betriebssystem übergeben werden. Es kann nicht garantiert werden, dass sie tatsächlich auf ein physisches Gerät wie ein Festplattenlaufwerk geschrieben werden.
Die Anleitungen Java IO
- Die Anleitung zu Java CharArrayWriter
- Die Anleitung zu Java FilterReader
- Die Anleitung zu Java FilterWriter
- Die Anleitung zu Java PrintStream
- Die Anleitung zu Java BufferedReader
- Die Anleitung zu Java BufferedWriter
- Die Anleitung zu Java StringReader
- Die Anleitung zu Java StringWriter
- Die Anleitung zu Java PipedReader
- Die Anleitung zu Java LineNumberReader
- Die Anleitung zu Java PushbackReader
- Die Anleitung zu Java PrintWriter
- Die Anleitung zu Java IO Binary Streams
- Die Anleitung zu Java IO Character Streams
- Die Anleitung zu Java BufferedOutputStream
- Die Anleitung zu Java ByteArrayOutputStream
- Die Anleitung zu Java DataOutputStream
- Die Anleitung zu Java PipedInputStream
- Die Anleitung zu Java OutputStream
- Die Anleitung zu Java ObjectOutputStream
- Die Anleitung zu Java PushbackInputStream
- Die Anleitung zu Java SequenceInputStream
- Die Anleitung zu Java BufferedInputStream
- Die Anleitung zu Java Reader
- Die Anleitung zu Java Writer
- Die Anleitung zu Java FileReader
- Die Anleitung zu Java FileWriter
- Die Anleitung zu Java CharArrayReader
- Die Anleitung zu Java ByteArrayInputStream
- Die Anleitung zu Java DataInputStream
- Die Anleitung zu Java ObjectInputStream
- Die Anleitung zu Java InputStreamReader
- Die Anleitung zu Java OutputStreamWriter
- Die Anleitung zu Java InputStream
- Die Anleitung zu Java FileInputStream
Show More
- Anleitungen Java Servlet/JSP
- Die Anleitungen Java New IO
- Anleitungen Spring Cloud
- Die Anleitungen Oracle Java ADF
- Die Anleitungen Java Collections Framework
- Java Grundlagen
- Die Anleitungen Java Date Time
- Java Open Source Bibliotheken
- Anleitungen Java Web Services
- Die Anleitungen Struts2 Framework
- Anleitungen Spring Boot