Leggere file di testo tramite IDE Eclipse

di il
7 risposte

Leggere file di testo tramite IDE Eclipse

Buongiorno a tutti,
sono palesemente nuovo nel settore e sto imparando le basi della programmazione in Java tramite IDE Eclipse.
Vorrei leggere un file di testo. Ho scritto il programma in diversi modi, seguendo ovviamente i tutorial su internet, ma tutte le volte escono degli errori dopo il Run. Sono stato molto attento a non tralasciare nulla e non vedo errori di sintassi. Le librerie richiamate sono tutte quelle suggerite nei forum o nei tutorial.

Primo esempio:

package javabase01;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileInputStream;
import java.net.*;
import java.io.*;

public class main_program {

@SuppressWarnings("deprecation")
public static void main(String[] args)
{

// definiamo il percorso al file da leggere
File doc=new File("C:\\Users\\Giorgio\\Desktop\\Prova.txt");

URL path=null;

// creaiamo un blocco try-catch per intercettare le eccezioni
try
{
// mostriamo il percorso al file
path=doc.toURL();
System.out.println("Il doc si trova nel percorso " + path);

//mostriamo il nome del file
doc=new File(path.getFile());
System.out.println("Nome del file " + doc);
int i;

// apriamo lo stream di input...
InputStream is=path.openStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));

// ...e avviamo la lettura del file con un ciclo
do
{
i=br.read();
System.out.println((char)i);
}
while (i!=-1);
is.close();
}

// intercettiamo eventuali eccezioni
catch (MalformedURLException e)
{
System.out.println("Attenzione:" + e);
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}

Secondo esempio:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class BufferReaderExample {

public static void main(String [] args) throws FileNotFoundException, IOException {
BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\Giorgio\\Desktop\\Prova.txt"));
String line = reader.readLine();
while(line!=null) {
System.out.println(line);
line = reader.readLine();
}
}

}

Nel primo caso dice: Impossibile trovare il file specificato.
Nel secondo escono più allarmi: Exception in thread "main" java.io.FileNotFoundException: C:\Users\Giorgio\Desktop\Prova.txt (Impossibile trovare il file specificato)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at javabase01.main_program.main(main_program.java:16)

Ho provato a salvare il file in mille cartelle diverse ma succede sempre la stessa cosa.
Ho provato ad utilizzare Visual Basic scrivendo con il linguaggio C++ e anche lì ho problemi di questo genere. Credo centri qualcosa con gli accessi ai file ma non so più dove sbattere la testa. Vi chiedo gentilmente una mano qualora qualcuno avesse già riscontrato il problema.
Grazie e a presto.

7 Risposte

  • Re: Leggere file di testo tramite IDE Eclipse

    Ray1991 ha scritto:


    Ho scritto il programma in diversi modi, seguendo ovviamente i tutorial su internet, ma tutte le volte escono degli errori dopo il Run.
    Chiariamo innanzitutto una cosa: con dei file sul file-system non c'è assolutamente bisogno di fare quei giri inutili. Non serve toURL(), non serve un java.net.URL, non serve getFile() di URL, non serve openStream(). Sono tutti "giri" di fatto inutili (e potenzialmente problematici).

    Semplicemente:

    FileInputStream fis = new FileInputStream(new File("C:\\..........."));

    oppure anche direttamente da un String senza il java.io.File:

    FileInputStream fis = new FileInputStream("C:\\...........");

    e poi il classico incapsulamento in InputStreamReader -> BufferedReader, cioè:

    BufferedReader br = new BufferedReader(new InputStreamReader(fis));


    Poi: leggere un singolo carattere per volta con il read() non è di per sé sbagliato. Ma dipende da COME vuoi trattare il contenuto del file e COSA intendi farci. Generalmente BufferedReader si utilizza molto per un motivo specifico: perché sa leggere righe di testo con il readLine() .

    Ray1991 ha scritto:


    Exception in thread "main" java.io.FileNotFoundException: C:\Users\Giorgio\Desktop\Prova.txt (Impossibile trovare il file specificato)
    La questione sarà banale ma ... il file esiste realmente lì?
  • Re: Leggere file di testo tramite IDE Eclipse

    Grazie per aver risposto!
    Il file esiste nella cartella che corrisponde al desktop. Per il percorso invece l'ho copiato brutalmente con copia e incolla dalle proprietà del file stesso.
    La mia idea di base sarebbe quella di leggere le righe di un file testo per poi trasformarle una a una. Una specie di post processor che converte un linguaggio in un altro.
    Sono ancora molto lontano dal mio obiettivo ma volevo almeno riuscire a leggere il contenuto di un file. Txt. Ho seguito alcuni tutorial e alcuni forum ma non capisco l'errore.
    La parola Desktop l'ho tirata fuori dal percorso ufficiale del file.
  • Re: Leggere file di testo tramite IDE Eclipse

    Ho pensato anche che non posso accedere ai file del mio PC tramite eclipse e che ci sia quindi un modo per consentirgli l'accesso.
  • Re: Leggere file di testo tramite IDE Eclipse

    Ray1991 ha scritto:


    Ho pensato anche che non posso accedere ai file del mio PC tramite eclipse
    No non c'entra Eclipse. Se lo puoi aprire es. con il Blocco Note, lo puoi "aprire" anche da Java.

    Vai con un prompt dei comandi:

    dir C:\Users\Giorgio\Desktop

    cosa vedi?
  • Re: Leggere file di testo tramite IDE Eclipse

    Su prompt dei comandi vedo tutti i file del desktop, compreso Prova.txt
  • Re: Leggere file di testo tramite IDE Eclipse

    Ho scoperto il motivo! Il file l'avevo nominato Prova.txt, come suggerito dai tutorial, e quindi per richiamarlo devo immettere Prova.txt.txt.
    Se tengo solo il nominativo "Prova", mi basta lasciare "Prova.txt".
    Davvero una cavolata. Mi è venuto in mente perchè nel Prompt dei comandi, quando mi hai suggerito di cercarlo, è apparso scritto in quel modo.Grazie infinite!!!
  • Re: Leggere file di testo tramite IDE Eclipse

    Ray1991 ha scritto:


    Il file l'avevo nominato Prova.txt, come suggerito dai tutorial, e quindi per richiamarlo devo immettere Prova.txt.txt.
    Se tengo solo il nominativo "Prova", mi basta lasciare "Prova.txt".
    Lo immaginavo ... la solita questione del tener nascoste (o meno) le estensioni in Windows ...
Devi accedere o registrarti per scrivere nel forum
7 risposte