Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Sulla combinazione FileReader e Scanner

    Salve vorrei fare in modo che il normale FileReader che legge un carattere alla volta mi si "evolvesse" in un lettore di intere righe alla volta.

    import java.util.Scanner;
    import java.io.FileReader;
    import java.io.IOException;
    public class Riordina
    {public static void main (String[] arg) throws IOException, ClassNotFoundExeption {
    FileReader lettore= new FileReader(arg[0]); // credo il nuovo lettore
    Scanner in = new Scanner(lettore);
    String[] vet = new String[100];
    for(int i=0; i<vet.length; i++)
    vet[i] = lettore.read();


    }
    }

    quello che vorrei fare qui e' che nel caso in cui da shell scriva java Riordina testo.txt mi legga le righe e ogni riga mi finisca nel vettore vet.

    trovo dei problemi (probabilmente il metodo .read che richiamo su lettore.read non e' corretto..)

    consigli?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Generalmente si usa un BufferedReader.
    codice:
    BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("miofile.txt") ) );
    
    // Leggo la prima riga:
    String linea = br.readLine();
    
    // Chiudo il file
    br.close();
    Ovviamente puoi risparmiarti il passaggio per InputStreamReader e mettere direttamente il tuo FileReader (dato che deriva da InputStreamReader).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    quindi dici che posso scrivere cosi' ?

    FileInputStream fis=new FileInputStream(arg[0]); // leggo il file dichiarato nel paramentro arg
    BufferedReader br = new BufferedReader(fis);

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    No... BufferedReader non prende come argomento del costruttore un oggetto di tipo InputStream, ma vuole un InputStreamReader. Quindi devi prima costruire un InputStreamReader a partire dal tuo FileInputStream, come ti ho indicato sopra.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.