Java FileWriter Beispiel

Java FileWriter

  • Die Java FileWriter-Klasse ist Teil des java.io-Pakets.
  • FileWriter ist eine Unterklasse der Klasse java.io.OutputStreamWriter.
  • FileWriter ist dazu gedacht, Zeichenströme zu schreiben.
  • FileWriter wird verwendet, um in Zeichendateien zu schreiben. Die write()-Methoden ermöglichen es Ihnen, Zeichen oder Zeichenketten in eine Datei zu schreiben.
  • FileWriter-Objekte werden normalerweise von höherstufigen Writer-Objekten umhüllt, wie zum Beispiel von BufferedWriter oder PrintWriter, die eine bessere Leistung und höherstufige, flexiblere Methoden zum Schreiben von Daten bereitstellen.

FileWriter-Konstruktoren

  1. FileWriter(File file): Erstellt ein FileWriter-Objekt unter Verwendung des angegebenen File-Objekts. Es wirft eine IOException aus, wenn die Datei existiert, aber ein Verzeichnis anstelle einer regulären Datei ist oder nicht existiert, nicht erstellt werden kann oder aus einem anderen Grund nicht geöffnet werden kann.
  2. FileWriter(File file, boolean append): Erstellt ein FileWriter-Objekt unter Verwendung des angegebenen File-Objekts. Wenn das zweite Argument true ist, werden die Bytes ans Ende der Datei geschrieben, anstatt ans Anfang. Es wirft eine IOException aus, wenn die Datei existiert, aber ein Verzeichnis anstelle einer regulären Datei ist oder nicht existiert, aber nicht erstellt werden kann, oder aus einem anderen Grund nicht geöffnet werden kann.
  3. FileWriter(FileDescriptor fd): Erstellt ein FileWriter-Objekt, das mit dem angegebenen Dateideskriptor verbunden ist.
  4. FileWriter(String fileName): Erstellt ein FileWriter-Objekt mit dem angegebenen Dateinamen. Es wirft eine IOException aus, wenn die benannte Datei existiert, aber ein Verzeichnis anstelle einer regulären Datei ist oder nicht existiert, aber nicht erstellt werden kann, oder aus einem anderen Grund nicht geöffnet werden kann.
  5. FileWriter(String fileName, boolean append): Erstellt ein FileWriter-Objekt mit dem angegebenen Dateinamen und einem booleschen Wert, der angibt, ob die Daten angehängt werden sollen oder nicht. Wenn das zweite Argument true ist, werden die Daten ans Ende der Datei geschrieben, anstatt ans Anfang. Es wirft eine IOException aus, wenn die benannte Datei existiert, aber ein Verzeichnis anstelle einer regulären Datei ist oder nicht existiert, aber nicht erstellt werden kann, oder aus einem anderen Grund nicht geöffnet werden kann.

Java FileWriter Beispiel

FileWriter erbt die Methode der Klassen java.io.OutputStreamWriter und java.io.Writer. Schauen wir uns die unten stehenden Methoden mit Beispielen an.

write(int c)

Diese Methode schreibt ein einzelnes Zeichen, das durch int c angegeben ist.

package com.journaldev.io.filewriter;

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

/**
 * Java write file using FileWriter write method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteIntExample {

	public static void main(String[] args) {
		FileWriter fileWriter = null;
		try {
			fileWriter = new FileWriter("D:/data/file.txt");
			// geerbte Methode von java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if (fileWriter != null) {
					fileWriter.flush();
					fileWriter.close();					
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

FileWriter implementiert das Interface AutoCloseable, daher können wir try with resources verwenden, während wir die Klasse FileWriter verwenden.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write method using try with resource
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteIntTryWithResource {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// geerbte Methode von java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Hinweis: Im obigen Programm schreibt fileWriter.write(65) A in die Datei, weil 65 der Dezimalwert für das Zeichen A ist. Daher wird die Ganzzahl 65 in das Zeichen A umgewandelt und dasselbe gilt für andere Werte.

write(String str, int off, int len)

Diese Methode schreibt einen Teil des Strings str von int off bis int len.

  • str: Zu schreibender String
  • off: Offset, ab dem die Zeichen gelesen werden sollen
  • len: Anzahl der zu schreibenden Zeichen

Wenn der Wert des len-Parameters negativ ist, werden keine Zeichen geschrieben.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(String  s,  int  off,  int  len) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteStringExample {

	public static void main(String[] args) {
		String data = "This is FileWriter Example.";
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//vererbte Methode von java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(char[] cbuf, int off, int len)

Diese Methode schreibt einen Teil eines Zeichenarrays, das durch char[] cbuf von int off bis int len angegeben ist.

  • cbuf: Ein Zeichenarray
  • off: Offset, ab dem das Lesen der Zeichen beginnen soll
  • len : Anzahl der zu schreibenden Zeichen
package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(char[] cbuf,  int  off,  int  len) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteCharArray {

	public static void main(String[] args) {
		char[] data = "This is FileWriter Example.".toCharArray();
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//vererbte Methode von java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(char[] cbuf)

Diese Methode schreibt das durch cbuf angegebene Zeichenarray.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(char[] cbuf) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteCharArrayExample {

	public static void main(String[] args) {
		char[] data = "This is FileWriter Example.".toCharArray();
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//vererbte Methode von java.io.Writer 
			fileWriter.write(data);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(String str)

Diese Methode schreibt einen Zeichenkettenwert in die durch str angegebene Datei.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(String  str) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteString {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//vererbte Methode von java.io.Writer 
			fileWriter.write("JournalDev");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

anfügen(char c)

Diese Methode fügt das angegebene Zeichen diesem Schreiber hinzu, wobei c das 16-Bit-Zeichen zum Anfügen ist.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter append(char c) method
 * 
 * @author pankaj
 *
 */
public class FileWriterAppendCharacter {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//geerbte Methode von java.io.Writer 
			fileWriter.write("JournalDev");
			fileWriter.append('C');
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

spülen()

Diese Methode spült den Stream. Wenn die Methode spülen() aufgerufen wird, schreibt sie sofort die Daten in die Ausgabedatei.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file with FileWriter flush() method
 * 
 * @author pankaj
 *
 */
public class FileWriterFlushExample {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//geerbte Methode von java.io.Writer 
			fileWriter.write("JournalDev");
			//geerbte Methode von java.io.OutputStreamWriter
			fileWriter.flush();
			
			fileWriter.write(" Tutorials");
			fileWriter.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

schließen()

Diese Methode spült den Stream, bevor sie ihn schließt. Nachdem der Stream geschlossen wurde, führt der Aufruf der Methode write() oder flush() dazu, dass eine IOException ausgelöst wird. Das Schließen eines zuvor geschlossenen Streams hat keine Auswirkungen.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file with FileWriter close() method
 * 
 * @author pankaj
 *
 */
public class FileWriterCloseExample {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//geerbte Methode von java.io.Writer 
			fileWriter.write("JournalDev");
			//geerbte Methode von java.io.OutputStreamWriter
			fileWriter.close();;
			
			fileWriter.write(" Tutorials");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Output:

java.io.IOException: Stream closed
	at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
	at sun.nio.cs.StreamEncoder.write(Unknown Source)
	at sun.nio.cs.StreamEncoder.write(Unknown Source)
	at java.io.OutputStreamWriter.write(Unknown Source)
	at java.io.Writer.write(Unknown Source)
	at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)

FileWriter vs FileOutputStream

  • FileWriter ist dafür gedacht, Zeichenströme zu schreiben, während FileOutputStream für das Schreiben von Rohbytes verwendet wird.
  • FileWriter behandelt 16-Bit-Zeichen, während FileOutputStream mit 8-Bit-Bytes arbeitet.
  • FileWriter kann Unicode-Zeichenfolgen verarbeiten, während FileOutputStream Bytes in eine Datei schreibt und keine Zeichen oder Zeichenfolgen akzeptiert, daher muss es von OutputStreamWriter umschlossen werden, um Zeichenfolgen zu akzeptieren.

Sie können auch java write file überprüfen, um mehr darüber zu erfahren, wie man Dateien in Java schreibt. Das ist alles für Java FileWriter, ich hoffe, hier wurde nichts Wichtiges verpasst.

Sie können alle Beispiele aus unserem GitHub-Repository herunterladen.

Referenz: API-Dokumentation

Source:
https://www.digitalocean.com/community/tutorials/java-filewriter-example