I File in Java: differenze tra le versioni
(→Lettura e scrittura di file di testo) |
(→Lettura e Scrittura su File) |
||
Riga 10: | Riga 10: | ||
<syntaxhighlight lang="java" line> | <syntaxhighlight lang="java" line> | ||
import java.io.BufferedReader; | import java.io.BufferedReader; | ||
− | |||
import java.io.File; | import java.io.File; | ||
− | |||
import java.io.FileNotFoundException; | import java.io.FileNotFoundException; | ||
− | import java.io. | + | import java.io.FileReader; |
import java.io.IOException; | import java.io.IOException; | ||
import java.io.InputStreamReader; | import java.io.InputStreamReader; | ||
import java.io.PrintWriter; | import java.io.PrintWriter; | ||
+ | import java.io.RandomAccessFile; | ||
− | public class | + | public class GestioneFile { |
− | String | + | String textFileName = "testo.txt"; |
+ | String binaryFileName = "binario.dat"; | ||
public void printFile() { | public void printFile() { | ||
try { | try { | ||
− | PrintWriter output = new PrintWriter( | + | PrintWriter output = new PrintWriter(textFileName); |
− | output. | + | output.print("Stampa su file di una stringa di testo"); |
output.close(); | output.close(); | ||
} catch (FileNotFoundException e) { | } catch (FileNotFoundException e) { | ||
− | // | + | // Blocco di gestione delle eccezioni |
e.printStackTrace(); | e.printStackTrace(); | ||
} | } | ||
Riga 37: | Riga 37: | ||
String line = null; | String line = null; | ||
try { | try { | ||
− | + | // Lettura di input da console | |
− | + | BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); | |
+ | line = console.readLine(); | ||
+ | System.out.println(line); | ||
− | BufferedReader | + | // Lettura di input da file |
− | line = | + | BufferedReader fileReader = new BufferedReader(new FileReader(new File(textFileName))); |
− | + | // Lettura di un singolo carattere | |
+ | char c = (char)fileReader.read(); | ||
+ | System.out.print(c); | ||
+ | // Lettura di una riga di testo | ||
+ | line = fileReader.readLine(); | ||
+ | |||
+ | fileReader.close(); | ||
console.close(); | console.close(); | ||
} catch (IOException e) { | } catch (IOException e) { | ||
− | // | + | // Blocco di gestione delle eccezioni |
e.printStackTrace(); | e.printStackTrace(); | ||
} | } | ||
Riga 56: | Riga 64: | ||
int[] v = new int[] {1000,2,3,4,5,6,7,8,9,10}; | int[] v = new int[] {1000,2,3,4,5,6,7,8,9,10}; | ||
try { | try { | ||
− | + | RandomAccessFile binaryFile = new RandomAccessFile(new File(binaryFileName), "rw"); | |
− | + | ||
for (int i = 0; i < 10; i++) { | for (int i = 0; i < 10; i++) { | ||
− | + | binaryFile.writeInt(v[i]); | |
} | } | ||
− | + | binaryFile.close(); | |
− | + | ||
} catch (Exception e) { | } catch (Exception e) { | ||
− | // | + | // Blocco di gestione delle eccezioni |
+ | e.printStackTrace(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public void readBinaryFile() { | ||
+ | try { | ||
+ | File file = new File(binaryFileName); | ||
+ | RandomAccessFile binaryFile = new RandomAccessFile(file, "r"); | ||
+ | |||
+ | int numIntegers = (int)file.length()/4; | ||
+ | int[] v = new int[numIntegers]; | ||
+ | |||
+ | for (int i = 0; i < numIntegers; i++) { | ||
+ | v[i] = binaryFile.readInt(); | ||
+ | } | ||
+ | |||
+ | binaryFile.close(); | ||
+ | |||
+ | // Stampa il vettore acquisito | ||
+ | for (int i = 0; i < numIntegers; i++) { | ||
+ | System.out.print(v[i] + " "); | ||
+ | } | ||
+ | } catch (Exception e) { | ||
+ | // Blocco di gestione delle eccezioni | ||
e.printStackTrace(); | e.printStackTrace(); | ||
} | } | ||
} | } | ||
} | } | ||
− | |||
</syntaxhighlight> | </syntaxhighlight> |
Versione delle 10:50, 19 mag 2017
Introduzione
Java fornisce classi e metodi per scrivere e leggere dati da files; le tipologie di files che si possono trovare sono sostanzialmente due:
- file di testo;
- file binari.
Grazie alle classi fornite da Java, la gestione dell'input/output da file è indipendente dalla piattaforma su cui il programma verrà eseguito; inoltre, le operazioni di I/O sono basate sul concetto di flusso (stream), ovvero una sequenza ordinata di dati che ha una sorgente e una destinazione.
Per leggere dati da una sorgente bisogna collegarla a uno stream, dove leggere le informazioni in modo ordinato. Analogamente, per scrivere dati su una destinazione, bisogna collegarla a uno stream in cui inserire i dati in modo sequenziale. All’inizio di queste operazioni occorre aprire lo stream e alla fine occorre chiuderlo.
Lettura e Scrittura su File
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
public class GestioneFile {
String textFileName = "testo.txt";
String binaryFileName = "binario.dat";
public void printFile() {
try {
PrintWriter output = new PrintWriter(textFileName);
output.print("Stampa su file di una stringa di testo");
output.close();
} catch (FileNotFoundException e) {
// Blocco di gestione delle eccezioni
e.printStackTrace();
}
}
public String readFromFile() {
String line = null;
try {
// Lettura di input da console
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
line = console.readLine();
System.out.println(line);
// Lettura di input da file
BufferedReader fileReader = new BufferedReader(new FileReader(new File(textFileName)));
// Lettura di un singolo carattere
char c = (char)fileReader.read();
System.out.print(c);
// Lettura di una riga di testo
line = fileReader.readLine();
fileReader.close();
console.close();
} catch (IOException e) {
// Blocco di gestione delle eccezioni
e.printStackTrace();
}
return line;
}
public void writeBinaryFile() {
int[] v = new int[] {1000,2,3,4,5,6,7,8,9,10};
try {
RandomAccessFile binaryFile = new RandomAccessFile(new File(binaryFileName), "rw");
for (int i = 0; i < 10; i++) {
binaryFile.writeInt(v[i]);
}
binaryFile.close();
} catch (Exception e) {
// Blocco di gestione delle eccezioni
e.printStackTrace();
}
}
public void readBinaryFile() {
try {
File file = new File(binaryFileName);
RandomAccessFile binaryFile = new RandomAccessFile(file, "r");
int numIntegers = (int)file.length()/4;
int[] v = new int[numIntegers];
for (int i = 0; i < numIntegers; i++) {
v[i] = binaryFile.readInt();
}
binaryFile.close();
// Stampa il vettore acquisito
for (int i = 0; i < numIntegers; i++) {
System.out.print(v[i] + " ");
}
} catch (Exception e) {
// Blocco di gestione delle eccezioni
e.printStackTrace();
}
}
}