Michael Feldman
Esempi Java - File e directory
E' forse utile ricordare che la classe java.io.File viene utilizzata sia per i file sia per le directory. Per stabilire se un oggetto di tipo File e' una directory occorre verificarlo con una chiamata a isDirectory(File file):
File home = new File("home_dir");
boolean dir = home.isDirectory();
Sommario
- Scrivere su di un file di testo
- Leggere un file di testo
- Cercare ed elaborare i file contenuti in directory annidate
- Copiare un file
Scrivere su di un file di testo
[Tratto da www.exampledepot.com]Se il file non esiste viene creato automaticamente, altrimenti viene sovrascritto.
import java.io.*;
...
try {
BufferedWriter out = new BufferedWriter(new FileWriter("nomeFile.txt"));
out.write("Testo");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
Se invece si vuole appendere alla fine di un file esistente:
import java.io.*;
...
try {
BufferedWriter out = new BufferedWriter(new FileWriter("nomeFile.txt"), true);
out.write("Testo");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
Leggere un file di testo
[Tratto da www.exampledepot.com]
Il metodo process(File file) deve ovviamente essere implementato per svolgere gli scopi richiesti.
import java.io.*;
...
try {
BufferedReader in = new BufferedReader(new FileReader("nomeFile.txt"));
String str;
while ((str = in.readLine()) != null) {
process(str);
}
in.close();
} catch (IOException e) {
}
Cercare ed elaborare i file contenuti in directory annidate
[Tratto da www.exampledepot.com]
Questo esempio utilizza la ricorsione per scorrere tutti i file presenti in tutte le sottodirectory di una directory scelta.
Il metodo process(File file) deve ovviamente essere implementato per svolgere gli scopi richiesti.
import java.io.*;
...
public static void visitAllFiles(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i=0; i<children.length; i++) {
visitAllFiles(new File(dir, children[i]));
}
} else {
process(dir);
}
}
Copiare un file
[Tratto da www.exampledepot.com]Viene semplicemente letto uno stream associato al file sorgente e scritto su di uno stream associato al file destinazione.
import java.io.*;
...
void copy(File src, File dst) throws IOException {
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}