Autore Topic: Leggere input da file txt  (Letto 3840 volte)

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Leggere input da file txt
« il: 30 Dicembre 2011, 17:00:42 CET »
0
Buongiorno ragazzi, sono alle prese con la programmazione su android per un caso di studio all'uni, devo leggere un file txt(da quello che ho capito devo inserirlo nella cartella assets). Senza l'itnerfaccia grafica funzionava semplicemente cosi

Codice: [Seleziona]
FileReader reader = new FileReader("Rilevazioni.txt");
però da quando ho integrato la GUI mi da un'eccezione di tipo FileNotFoundException

come faccio??

Offline ciopper90

  • Utente junior
  • **
  • Post: 106
  • Respect: +4
    • Mostra profilo
Re:Leggere input da file txt
« Risposta #1 il: 30 Dicembre 2011, 17:23:22 CET »
0
Buongiorno ragazzi, sono alle prese con la programmazione su android per un caso di studio all'uni, devo leggere un file txt(da quello che ho capito devo inserirlo nella cartella assets). Senza l'itnerfaccia grafica funzionava semplicemente cosi

Codice: [Seleziona]
FileReader reader = new FileReader("Rilevazioni.txt");
però da quando ho integrato la GUI mi da un'eccezione di tipo FileNotFoundException

come faccio??
questo funziona solo se il file si trova nella home directory del programma installato.
quello di cui hai bisogno sono le funzioni per prelevare un file dagli assets e non da una semplice cartela del cellulare

prova a guardare se cori risolvi il problema

http://www.agmobilesolutions.com/2010/11/leggere-le-risorse-da-assets/
« Ultima modifica: 30 Dicembre 2011, 17:25:09 CET da ciopper90 »

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere input da file txt
« Risposta #2 il: 30 Dicembre 2011, 17:34:00 CET »
0
Scusami ma non riesco a capire cosa fa:
Codice: [Seleziona]
AssetManager am = getResources().getAssets();Questo credo che crea un oggetto am che punta alla cartella Assets giusto? ma poi mi sono perso

Cmq anche mettendolo nella home directory mi da lo stesso errore

Offline ciopper90

  • Utente junior
  • **
  • Post: 106
  • Respect: +4
    • Mostra profilo
Re:Leggere input da file txt
« Risposta #3 il: 30 Dicembre 2011, 17:44:40 CET »
0
Scusami ma non riesco a capire cosa fa:
Codice: [Seleziona]
AssetManager am = getResources().getAssets();Questo credo che crea un oggetto am che punta alla cartella Assets giusto? ma poi mi sono perso

Cmq anche mettendolo nella home directory mi da lo stesso errore
per home directory intendo quella del programma istallato cioe in /data/data/tuo-package/ se non sbaglio

io non ho mai preso dei file dall'assets ma credo che tutto il metodo stesso recuperi una lista di file dal assets e poi ti apre l'input stream dei file che trova..ovviamente tu puoi sistemare il metodo in modo tale che venga letto solo quel file :D

altra soluzione carichi il file da memoria esterna..se cerchi nel forum trovi tutto a riguardo

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere input da file txt
« Risposta #4 il: 30 Dicembre 2011, 17:57:32 CET »
0
a dir la verità se riuscissi a leggere dalla Directory Sorgente sarebbe il max, calcolando che il file da leggere mi serve solo per simulare dei dati.

Io il file l'ho messo nella cartella del progetto insieme alle cartelle src, assets, res ecc....però continua a darmi quell'eccezione.

Escludiamo la lettura da assets

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere input da file txt
« Risposta #5 il: 30 Dicembre 2011, 18:03:57 CET »
0
sto dando un occhiata al log, e ci sono un sacco di voci...io devo tener conto di quelle di livello W o E?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Leggere input da file txt
« Risposta #6 il: 30 Dicembre 2011, 20:42:10 CET »
0
Non puoi metterlo dove vuoi. Devi metterlo in assets (o in raw credo).
Postate il LogCat LogCat LogCat LogCat LogCat

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere input da file txt
« Risposta #7 il: 31 Dicembre 2011, 15:23:59 CET »
0
ok allora assumendo che devo metterlo nella cartella assets come lo prelievo??

il metodo che mi è stato indicato sopra è un po confuso...cmq gli do un'occhiata

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere input da file txt
« Risposta #8 il: 19 Gennaio 2012, 15:09:38 CET »
0
Rieccomi qui :) non ho ancora risolto questo problema l'ho solo accantonato per preparare un altro esame... cmq è organizzato cosi il programma.
+ package core.sms.mobile
  - gestoreRilevazioni
  - Historicanager
  - JournalinManager
  - Rilevazione
  - SMS_WSN
  - SMSMobile2Activity
+ package core.sms.mobile.FileManager
  - DataSourceManager
  - FileDiJournaling
  - FileRilevazioni <--------
  - StoricoRilevazioni

La classe che gestisce l'apertura e la lettura del file è la classe FileRilevazioni e il codice che uso è questo
Codice: [Seleziona]
FileInputStream fis = cnt.openFileInput("rilevazioni.txt");
in = new Scanner(fis);

E questo è il log :
Citazione
01-19 13:58:53.830: I/System.out(276): File non trovato
01-19 13:58:53.830: W/System.err(276): java.io.FileNotFoundException: /data/data/core.sms.mobile/files/rilevazioni.txt (No such file or directory)
01-19 13:58:53.871: W/System.err(276):    at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method)
01-19 13:58:53.871: W/System.err(276):    at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152)
01-19 13:58:53.880: W/System.err(276):    at java.io.FileInputStream.<init>(FileInputStream.java:82)
01-19 13:58:53.880: W/System.err(276):    at android.app.ContextImpl.openFileInput(ContextImpl.java:400)
01-19 13:58:53.892: W/System.err(276):    at android.content.ContextWrapper.openFileInput(ContextWrapper.java:152)
01-19 13:58:53.892: W/System.err(276):    at core.sms.mobile.FileManager.FileRilevazioni.openFile(FileRilevazioni.java:27)
01-19 13:58:53.892: W/System.err(276):    at core.sms.mobile.SMSMobile2Activity.onCreate(SMSMobile2Activity.java:33)
01-19 13:58:53.892: W/System.err(276):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-19 13:58:53.910: W/System.err(276):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-19 13:58:53.910: W/System.err(276):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-19 13:58:53.910: W/System.err(276):    at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-19 13:58:53.910: W/System.err(276):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-19 13:58:53.910: W/System.err(276):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 13:58:53.910: W/System.err(276):    at android.os.Looper.loop(Looper.java:123)
01-19 13:58:53.910: W/System.err(276):    at android.app.ActivityThread.main(ActivityThread.java:4627)
01-19 13:58:53.910: W/System.err(276):    at java.lang.reflect.Method.invokeNative(Native Method)
01-19 13:58:53.910: W/System.err(276):    at java.lang.reflect.Method.invoke(Method.java:521)
01-19 13:58:53.920: W/System.err(276):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-19 13:58:53.920: W/System.err(276):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-19 13:58:53.920: W/System.err(276):    at dalvik.system.NativeStart.main(Native Method)
01-19 13:58:58.995: W/dalvikvm(276): threadid=8: thread exiting with uncaught exception (group=0x4001d800)
01-19 13:58:59.062: E/AndroidRuntime(276): FATAL EXCEPTION: Timer-0
01-19 13:58:59.062: E/AndroidRuntime(276): java.lang.NullPointerException
01-19 13:58:59.062: E/AndroidRuntime(276):    at core.sms.mobile.FileManager.FileRilevazioni.readLine(FileRilevazioni.java:41)
01-19 13:58:59.062: E/AndroidRuntime(276):    at core.sms.mobile.SMSMobile2Activity$1MyTask.run(SMSMobile2Activity.java:42)
01-19 13:58:59.062: E/AndroidRuntime(276):    at java.util.Timer$TimerImpl.run(Timer.java:289)
01-19 14:01:37.942: I/Process(276): Sending signal. PID: 276 SIG: 9

Offline vecio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Leggere input da file txt
« Risposta #9 il: 20 Gennaio 2012, 11:23:27 CET »
0
Ho trovato una soluzione che funziona ma mi soddisfa poco perchè non è quello che volevo fare. Cmq ho messo il file nella cartella Assets e dal main ho passato al metodo che si occupava di aprire il file il contesto. il metodo è cosi formato
Codice: [Seleziona]
public void openFile(Context cnt) throws IOException {
try {
   InputStream fis = cnt.getAssets().open("rilevazioni.txt");
   in = new Scanner(fis);               
}
catch (FileNotFoundException e) {
System.out.println("File non trovato");
e.printStackTrace();
}

Per domande o altro scrivete