EOF in java

di il
5 risposte

EOF in java

Salve ragazzi ho un problema non riesco a trovare il modo adatto per fare l'EOF in java in sostanza ho un file di tipo FileInputStream lo devo leggere fino alla fine ma non riesco a scorrerlo fino alla fine vado sempre a finire fuori range massimo come posso risolvere??

5 Risposte

  • Re: EOF in java

    broke31 ha scritto:


    salve ragazzi ho un problema non riesco a trovare il modo adatto per fare l'EOF in java in sostanza ho un file di tipo FileInputStream lo devo leggere fino alla fine ma non riesco a scorrerlo fino alla fine vado sempre a finire fuori range massimo come posso risolvere??
    Che vuol dire?! Non puoi andare "oltre" la fine.
    Se usi il read che legge 1 byte, torna -1 per EOF (sconsigliato se leggi direttamente dal FileInputStream). Se usi i read che ricevono un byte[], tornano -1 per EOF o comunque il numero di byte letti.

    Sto pensando che magari stai leggendo a blocchi di byte, proprio con un byte[] di una certa dimensione prefissata da te. In questo caso devi usare il valore di ritorno del read, perché l'ultimo blocco letto chiaramente può non riempire tutto. E se non lo consideri e prendi tutto il byte[], al fondo hai "spazzatura" (ciò che è rimasto dalla penultima lettura che aveva riempito tutto il buffer).
  • Re: EOF in java

    No, in sostanza ho un file con all'interno delle stringhe ad un certo punto voglio prendere queste stringhe e inserirle all'interno di un arrayList allora ho provato a fare nel seguente modo:
    
    
    FileInputStream file;
    
    Scanner in =new Scanner(file);
    ArrayList <String > app=new ArrayList<String>()
    while(file.read()!=-1)
    app.add(in.nextLine());
    
    
    
    il file è stato già creato con un'altro programma
  • Re: EOF in java

    broke31 ha scritto:


    FileInputStream file;
    
    Scanner in =new Scanner(file);
    ArrayList <String > app=new ArrayList<String>()
    while(file.read()!=-1)
    app.add(in.nextLine());
    
    Ok, non è quello che stavo pensando io ...... ma è peggio.
    Qui stai un po' leggendo con read() dal FileInputStream e un po' con nextLine() da Scanner. Non solo non va bene .... ma non ha proprio senso.
    Se hai al livello più "esterno" un Scanner, usa solo lo Scanner, non anche lo stream sottostante.

    Scanner ha hasNextLine() e nextLine(). Usa questi.
  • Re: EOF in java

    In sostanza ho capito che usare tutti e 2 i metodi é una bella cretinata xd hasnextLine ==false é la mia condizione di uscita dal ciclo giusto? Al suo interno invece mi prendoriga riga con nextline ho bel chiaro?
  • Re: EOF in java

    broke31 ha scritto:


    hasnextLine ==false é la mia condizione di uscita dal ciclo giusto? Al suo interno invece mi prendoriga riga con nextline ho bel chiaro?
    Sì.
Devi accedere o registrarti per scrivere nel forum
5 risposte