Autore Topic: Salvare Stringhe in locale  (Letto 2180 volte)

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Salvare Stringhe in locale
« il: 04 Aprile 2011, 16:53:13 CEST »
0
Salve a tutti, per una mia applicazione, ho bisogno di poter salvare in locale alcune stringhe in formato JSON. In realta' dovrebbe spedirle ad un server, ma in situazioni di impossibilita' deve poterle salvare e poi spedirle quando possibile.
Io avevo pensato di fare una cosa del genere:
  • controllo che ci sia la connessione
  • se c'e' spedisco normalmente al server
  • se non c'e' salvo una riga in file di testo locale (in modalita' append)
  • quando opportuno leggo queste stringhe e le mando una a una al server

Il problema e' che sto' avendo problemi nella scrittura su file. Per esempio quando vado a fare la creazione del file con questa riga
...
File file = new File("","dasalvare.txt");
FileWriter fw = new FileWriter(file, true);
...

mi da' errore (non lo segna nel logcat, eclipse cerca di aprire una prospettiva di debug). Non ho capito dove cavolo si metta questi file, infatti il costruttore di File mi chiede il path dove mettere il file...

Avete qualche consiglio su come fare?
Risparmia l'acqua, bevi birra...

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Salvare Stringhe in locale
« Risposta #1 il: 04 Aprile 2011, 17:56:02 CEST »
0
Ma porc... Il problema era che cercavo di usare quelle funzioni in delle classi che non estendono activity, per quello non funziona!
Risparmia l'acqua, bevi birra...

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Salvare Stringhe in locale
« Risposta #2 il: 04 Aprile 2011, 17:59:42 CEST »
0
beh, ma un qualche tipo di problema deve dartelo....
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Salvare Stringhe in locale
« Risposta #3 il: 04 Aprile 2011, 18:30:44 CEST »
0
In che senso? Intendi nel logcat?
Risparmia l'acqua, bevi birra...

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:Salvare Stringhe in locale
« Risposta #4 il: 04 Aprile 2011, 18:59:42 CEST »
0
Salve a tutti, per una mia applicazione, ho bisogno di poter salvare in locale alcune stringhe in formato JSON. In realta' dovrebbe spedirle ad un server, ma in situazioni di impossibilita' deve poterle salvare e poi spedirle quando possibile.
Io avevo pensato di fare una cosa del genere:
  • controllo che ci sia la connessione
  • se c'e' spedisco normalmente al server
  • se non c'e' salvo una riga in file di testo locale (in modalita' append)
  • quando opportuno leggo queste stringhe e le mando una a una al server

Il problema e' che sto' avendo problemi nella scrittura su file. Per esempio quando vado a fare la creazione del file con questa riga
...
File file = new File("","dasalvare.txt");
FileWriter fw = new FileWriter(file, true);
...

mi da' errore (non lo segna nel logcat, eclipse cerca di aprire una prospettiva di debug). Non ho capito dove cavolo si metta questi file, infatti il costruttore di File mi chiede il path dove mettere il file...

Avete qualche consiglio su come fare?

Che io sappia il file te lo puoi creare sulla sd (o comunque sulla memoria interna), non altrove.
Il path lo ottieni con questo metodo Environment | Android Developers
Inoltre dovresti inserire nel manifest i permessi per scrivere su sd.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Salvare Stringhe in locale
« Risposta #5 il: 04 Aprile 2011, 19:01:33 CEST »
0
Io non voglio scrivere su SD, mi serve un file che stia sul file system del dispositivo e, quando necessario, ci possa leggere o scrivere...
Risparmia l'acqua, bevi birra...

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:Salvare Stringhe in locale
« Risposta #6 il: 04 Aprile 2011, 19:45:26 CEST »
0
Io non voglio scrivere su SD, mi serve un file che stia sul file system del dispositivo e, quando necessario, ci possa leggere o scrivere...
E ti ripeto che, per quanto ne so, non puoi farlo con file normali.
Ovviamente puoi usare i database che vanno in cartelle predefinite dentro la cartella dell'app. Ma la collocazione la gestisce il sistema in automatico.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Salvare Stringhe in locale
« Risposta #7 il: 04 Aprile 2011, 20:00:32 CEST »
0
Il fatto e' che nn e' previsto che io abbia una sd! Possibile che una applicazione non possa scrivere su un file?
Risparmia l'acqua, bevi birra...

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Salvare Stringhe in locale
« Risposta #8 il: 04 Aprile 2011, 20:27:34 CEST »
+1
Aspettate un attimo.

Quello che fai tu, cioè di scrivere su file, si può fare.
Come dice blackgin il path non lo decidi tu; non ho controllato ma credo che lo metta in una dir relativa al path dell'app (tipo db).
Io lo uso, senza bisogno di permessi.
Eccovi uno stralcio di codice:

Codice (Java): [Seleziona]
                FileOutputStream fos;
                try {
                        fos = this.openFileOutput(FILENAME, Context.MODE_PRIVATE);
                        fos.write("Ciao a tutti".getBytes());
                        fos.close();
                } catch (Exception e) {
                        e.printStackTrace();
                }

@Agosteeno: comunque, un qualche tipo di errore DEVE darlo, se non funziona!!! ^_^
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Salvare Stringhe in locale
« Risposta #9 il: 04 Aprile 2011, 20:47:58 CEST »
0
Ho capito cosa intendi, il fatto e' che prima nn funzionava perche' non chiamavo il metodo in una classe che estendeva activity e quindi non funzionava. Il fatto e' che non mi dava nulla sul logcat. Non so' se lo fa' perche' c'e' qualche casino nell'ambiente di sviluppo (anche l'emulatore ogni tanto da qualche errore) fatto sta' per alcuni errori che cerca di aprire una finestra di debug ,oltre a quella del ddms, che io non so' usare, quindi non riesco a capire dove si sviluppi e perche'. Ad ogni modo non ho avuto tempo di continuare con le prove, ma appena possibile cerco di sistemare. Vi faro' sapere se ci sono ulteriori problemi. Ciao e grazie mille!
Risparmia l'acqua, bevi birra...

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:Salvare Stringhe in locale
« Risposta #10 il: 04 Aprile 2011, 21:15:47 CEST »
0
Ho capito cosa intendi, il fatto e' che prima nn funzionava perche' non chiamavo il metodo in una classe che estendeva activity e quindi non funzionava. Il fatto e' che non mi dava nulla sul logcat. Non so' se lo fa' perche' c'e' qualche casino nell'ambiente di sviluppo (anche l'emulatore ogni tanto da qualche errore) fatto sta' per alcuni errori che cerca di aprire una finestra di debug ,oltre a quella del ddms, che io non so' usare, quindi non riesco a capire dove si sviluppi e perche'. Ad ogni modo non ho avuto tempo di continuare con le prove, ma appena possibile cerco di sistemare. Vi faro' sapere se ci sono ulteriori problemi. Ciao e grazie mille!
Nella parte riservata al debug c'é pure la finestra del logcat..
Postate il LogCat LogCat LogCat LogCat LogCat

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Salvare Stringhe in locale
« Risposta #11 il: 04 Aprile 2011, 21:22:33 CEST »
0
Il fatto e' che non mi dava nulla sul logcat. Non so' se lo fa' perche' c'e' qualche casino nell'ambiente di sviluppo (anche l'emulatore ogni tanto da qualche errore) fatto sta' per alcuni errori che cerca di aprire una finestra di debug ,oltre a quella del ddms, che io non so' usare, quindi non riesco a capire dove si sviluppi e perche'.

Se accetti un consiglio spassionato, dovresti passare un po' di tempo a prendere confidenza con gli strumenti di debug. Anche se ti sembra tempo buttato, è un investimento che nel lungo termine ha un rendimento mostruoso: sapendoli usare, risolvi in pochi minuti problemi che altrimenti potresti passare giorni (o più) a districare.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Salvare Stringhe in locale
« Risposta #12 il: 06 Aprile 2011, 10:23:33 CEST »
0
Scusate, se volessi leggere il file scritto precedentemente come potrei fare? Dovrei semplicemente usare il nome usato nella scrittura e lo cercherebbe da solo?
Risparmia l'acqua, bevi birra...

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Salvare Stringhe in locale
« Risposta #13 il: 06 Aprile 2011, 10:36:19 CEST »
0

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
Re:Salvare Stringhe in locale
« Risposta #14 il: 06 Aprile 2011, 11:05:37 CEST »
0
Grazie mille, ho fatto! Ultima cosina, sono riusciro a fare scritture e letture solo usando le funzioni che lavorano su byte, mentre con quelle su stringhe nn riuscivo a farle andare. Sapete se e' un problema intriseco ad android oppure e' piu' probabile che fossi io a sbagliare qualcosa?
Risparmia l'acqua, bevi birra...