Esempio di Java FileWriter

Java FileWriter

  • La classe FileWriter di Java fa parte del pacchetto java.io.
  • FileWriter è una sottoclasse della classe java.io.OutputStreamWriter.
  • FileWriter è destinato alla scrittura di flussi di caratteri.
  • FileWriter viene utilizzato per scrivere su file di caratteri. I suoi metodi write() ti consentono di scrivere caratteri o stringhe su un file.
  • Di solito i FileWriter vengono incapsulati da oggetti Writer di livello superiore, come BufferedWriter o PrintWriter, che forniscono migliori prestazioni e metodi di livello superiore e più flessibili per scrivere dati.

Costruttori di FileWriter

  1. FileWriter(File file): Crea un oggetto FileWriter utilizzando l’oggetto File specificato. Lancia un’eccezione IOException se il file esiste ma è una directory anziché un file regolare, o se non esiste ma non può essere creato, o se non può essere aperto per qualsiasi altro motivo.
  2. FileWriter(File file, boolean append): Crea un oggetto FileWriter utilizzando l’oggetto File specificato. Se il secondo argomento è true, allora i byte saranno scritti alla fine del file anziché all’inizio. Solleva un’eccezione IOException se il file esiste ma è una directory invece di un file regolare o non esiste ma non può essere creato, o non può essere aperto per qualsiasi altro motivo.
  3. FileWriter(FileDescriptor fd): Crea un oggetto FileWriter associato al descrittore di file specificato.
  4. FileWriter(String fileName): Crea un oggetto FileWriter utilizzando il fileName specificato. Solleva un’eccezione IOException se il file con il nome specificato esiste ma è una directory invece di un file regolare o non esiste ma non può essere creato, o non può essere aperto per qualsiasi altro motivo.
  5. FileWriter(String fileName, boolean append): Crea un oggetto FileWriter utilizzando il fileName specificato con un booleano che indica se aggiungere i dati scritti. Se il secondo argomento è true, allora i dati saranno scritti alla fine del file anziché all’inizio. Solleva un’eccezione IOException se il file con il nome specificato esiste ma è una directory invece di un file regolare o non esiste ma non può essere creato, o non può essere aperto per qualsiasi altro motivo.

Esempio di Java FileWriter

FileWriter eredita il metodo delle classi java.io.OutputStreamWriter e java.io.Writer. Vediamo di seguito i metodi con esempi.

write(int c)

Questo metodo scrive un singolo carattere specificato da int c.

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");
			// metodo ereditato da 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 implementa l’interfaccia AutoCloseable, quindi possiamo utilizzare try with resources quando usiamo la classe FileWriter.

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")) {
			// metodo ereditato da java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Nota: Nel programma sopra, fileWriter.write(65) scriverà A nel file perché 65 è il valore decimale per il carattere A, quindi l’intero 65 verrà convertito nel carattere A e lo stesso vale per gli altri.

write(String str, int off, int len)

Questo metodo scrive una porzione di Stringa str da int off a int len.

  • str: Stringa da scrivere
  • off: Offset da cui iniziare a leggere i caratteri
  • len: Numero di caratteri da scrivere

Se il valore del parametro len è negativo, allora non vengono scritti caratteri.

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")) {
			//metodo ereditato da java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

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

Questo metodo scrive una porzione di un array di caratteri specificato da char[] cbuf da int off a int len.

  • cbuf: Un array di caratteri
  • off: Offset da cui iniziare a leggere i caratteri
  • len: Numero di caratteri da scrivere
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")) {
			//metodo ereditato da java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(char[] cbuf)

Questo metodo scrive l’array di caratteri specificato da cbuf.

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")) {
			//metodo ereditato da java.io.Writer 
			fileWriter.write(data);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(String str)

Questo metodo scrive un valore di stringa nel file specificato da str.

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")) {
			//metodo ereditato da java.io.Writer 
			fileWriter.write("JournalDev");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

appendi(carattere c)

Questo metodo aggiunge il carattere specificato a questo scrittore, dove c è il carattere di 16 bit da aggiungere.

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")) {
			//metodo ereditato da java.io.Writer 
			fileWriter.write("JournalDev");
			fileWriter.append('C');
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

flush()

Questo metodo svuota lo stream. Quando il metodo flush() viene chiamato, scrive immediatamente i dati nel file di output.

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")) {
			//metodo ereditato da java.io.Writer 
			fileWriter.write("JournalDev");
			//metodo ereditato da java.io.OutputStreamWriter
			fileWriter.flush();
			
			fileWriter.write(" Tutorials");
			fileWriter.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

close()

Questo metodo svuota lo stream prima di chiuderlo. Una volta chiuso lo stream, l’invocazione del metodo write() o flush() causerà l’eccezione IOException. Chiudere uno stream precedentemente chiuso non ha alcun effetto.

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")) {
			//metodo ereditato da java.io.Writer 
			fileWriter.write("JournalDev");
			//metodo ereditato da 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 è destinato alla scrittura di flussi di caratteri mentre FileOutputStream è utilizzato per scrivere flussi di byte grezzi.
  • FileWriter gestisce caratteri a 16 bit mentre FileOutputStream gestisce byte a 8 bit.
  • FileWriter può gestire stringhe Unicode mentre FileOutputStream scrive byte su un file e non accetta caratteri o stringhe, quindi è necessario avvolgerlo con OutputStreamWriter per accettare stringhe.

Controlla anche java write file per ulteriori informazioni su come scrivere file in Java. Questo è tutto per Java FileWriter, spero che qui non sia stato perso nulla di importante.

Puoi scaricare tutti gli esempi di codice dal nostro Repository GitHub.

Riferimento: Doc API

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