Esercizio 1: TestIOTerminale

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

Esercizio 2: CopiaFileArgs

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>");
        }
    }
}

Esercizio 3: ListaDir

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

Esercizio 4: Test (analisi di testo)

Scrivere una classe Testo che modelli un testo letto da un file e che fornisca i seguenti costruttori e metodi: