Leggere un numero intero e visualizzarlo a terminale, utilizzando le classi di input/output di java.io
.
Classi da utilizzare: InputStream
, InputStreamReader
, BufferedReader
import java.io.*;
class TestIOTerminale {
public static void main(String[] args) throws IOException {
// costruiamo un buffered reader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//stream per la scrittura
PrintStream out = System.out;
out.print("Scrivi un numero > ");
//lettura
String s = br.readLine();
int n = Integer.parseInt(s);
//stampa
out.println("Numero scritto > " + n);
}
}
Interpreta il primo argomento sulla linea di comando come nome di un file di testo origine e il secondo argomento sulla linea di comando come nome di un file di test destinazione.
Copia il contenuto del file origine nel file destinazione, leggendo e scrivendo un solo carattere alla volta.
Classi da utilizzare: FileReader
, FileWriter
.
import java.io.*;
class CopiaFileArgs {
public static void main(String[] args) throws IOException {
if (args.length == 2) {
//stream lettura da file
FileReader frd = new FileReader(args[0]);
//stream scrittura su file
FileWriter fwr = new FileWriter(args[1]);
int i;
//lettura e scrittura
while ((i = frd.read()) != -1) {
fwr.write(i);
}
//chiusura degli stream
frd.close();
fwr.flush();
fwr.close();
} else {
System.out.println("Uso: java CopiaFileArgs <file_da_copiare> <file_copia>");
}
}
}
Se sulla linea di comando c’è un argomento lo interpreta come il nome di un file o di una directory; se sula linea di comando non c’è alcun argomento, si assume come argomento la directory corrente.
Se l’argomento è il nome di un file, stampa a terminale il suo path assoluto e la sua dimensione in byte;
Se l’argomento è una directory, stampa a terminale il suo contenuto, cioè la lista dei file e delle directory che essa contiene.
Classi da utilizzare: File
.
import java.io.*;
public class ListaDir {
public static void main(String[] args) throws IOException {
File f = null;
//se non ci sono argomenti consideriamo la directory corrente
if (args.length == 0)
f = new File(".");
else
f = new File(args[0]);
//se il nome specificato individua ...
if (f.isFile())
// se file, ne stampa nome e dimensione
System.out.println("File: " + f.getAbsolutePath() + ", " + f.length() + " byte");
else {
// una dir allora preleva la lista dei file
System.out.println("Directory: " + f.getAbsolutePath());
String[] lista = f.list();
//stampa
for(int i=0; i < lista.length; i++){
File tmp = new File(f.getAbsolutePath(), lista[i]);
if (tmp.isFile())
System.out.println(" file: " + tmp.getName() + " " + tmp.length()
+ " byte");
else
System.out.println(" dir.: " + tmp.getName());
}
}
}
}
Scrivere una classe Testo
che modelli un testo letto da un file e che fornisca i seguenti costruttori e metodi:
public Testo(File file)
Costruisce l’istanza dell’oggetto che modella il testo contenuto nel file specificato come argomento. Si assuma che l’argomento sia il riferimento ad un file di testo esistente.
public int numeroParole()
Restituisce il numero di parole che compaiono nel test modellato dall’oggetto che esegue il metodo
public int numeroParoleDistinte()
Restituisce il numero di parole distinte che compaiono nel testo modellato dall’oggetto che esegue il metodo.