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
FileWriter(File file)
: Crea un oggettoFileWriter
utilizzando l’oggetto File specificato. Lancia un’eccezioneIOException
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.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.FileWriter(FileDescriptor fd)
: Crea un oggetto FileWriter associato al descrittore di file specificato.FileWriter(String fileName)
: Crea un oggetto FileWriter utilizzando il fileName specificato. Solleva un’eccezioneIOException
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.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