Java is, in many ways, C++--

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

[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();
}