Autore Topic: problemi di funzionamento con file.exists()  (Letto 403 volte)

Offline michele88

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung N7100
  • Sistema operativo:
    Windows 8.1
problemi di funzionamento con file.exists()
« il: 03 Marzo 2015, 19:59:34 CET »
0
ciao ragazzi, sto cercando di fare una cosa semplicissima, ma non sò perché non funziona.

Codice (Java): [Seleziona]
private boolean fileBookmarksExists(){ //controlla se il file esiste
                File file = new File("bookmarksFile.xml");
                return file.exists();
        }

vorrei controllare se il file esiste o no. questa procedura mi dà sempre falso.
se provo a leggere scrivere e cancellare tutto ok. ho problemi solo sull'exists.
Sbaglio qlcs?
grazie a tutti!!
« Ultima modifica: 04 Marzo 2015, 10:20:40 CET da michele88 »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1189
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:file.exists() non funziona!
« Risposta #1 il: 03 Marzo 2015, 22:33:47 CET »
0
Codice (Java): [Seleziona]
 File file = new File("bookmarksFile.xml");
Crei un astrazione di un file al percorso "". con doppie virgolette intendo senza percorso.
I file andrebbero in environment.getexternalstoragedirectory() e qui metti la tua cartella e il file dentro la tua cartella.

Devi mettere anche i permessi di scrittura nel manifest

Offline michele88

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung N7100
  • Sistema operativo:
    Windows 8.1
Re:file.exists() non funziona!
« Risposta #2 il: 03 Marzo 2015, 22:36:09 CET »
0
Grazie per la risposta! Temo di non aver capito cosa mi consigli di fare precisamente?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1189
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:file.exists() non funziona!
« Risposta #3 il: 03 Marzo 2015, 22:48:19 CET »
0
Apri il manifest.xml. Aggiungi i permessi per la scrittura e lettura della memoria esterna.

Ora metti un mio_file.txt nella root della sd. Se hai solo memoria interna fa lo stesso. Mettila li.
Codice (Java): [Seleziona]
File file = new File(Enviroment.getExternalStorageDirectory(),"mio_file.txtl);
Vedrai che ora torna true. Quello che ho messo è codice scritto a mano. Forse ha degli errori di sintassi.

Se non hai capito cosa ho scritto ti consiglio di leggerti una guida su java e i file.

Offline michele88

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung N7100
  • Sistema operativo:
    Windows 8.1
Re:file.exists() non funziona!
« Risposta #4 il: 03 Marzo 2015, 22:52:49 CET »
0
 Ah ok. Cosi ho capito. Solo che il mio intento era sapere se esiste quel file nello specifico... (data/data/package/file/bookmarksFIle.xml) poi... se mettessi il file nella root della sd non potrei scrivere o leggere se il device non dispone dei permessi di root. No?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1189
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:file.exists() non funziona!
« Risposta #5 il: 03 Marzo 2015, 22:57:48 CET »
+1
Puoi scrivere e leggere anche senza permessi di root.

Se come percorso vuoi data/data/package/file/bookmarksFIle.xml, allora quando fai File f = new File(), devi mettere esattamente quel percorso. Non so che razza di percorso sia. Ma mi sa da path di sistema. Sei sicuro che devi andare li esattamente=

Offline michele88

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung N7100
  • Sistema operativo:
    Windows 8.1
Re:file.exists() non funziona!
« Risposta #6 il: 03 Marzo 2015, 23:00:36 CET »
0
Mmmm... creando il file me l'ha creato li. Perché li ci sono i file privati dell'applicazione, dove altre app non possono accedervi. Comunque provo a scrivere il percorso per esteso... vediamo se va.. per ora grazie! :-)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1189
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:file.exists() non funziona!
« Risposta #7 il: 03 Marzo 2015, 23:22:08 CET »
0
Non mi risulta che facendo: File f = new File(quelpercorso) venga creato un file in quella path.
Anche perchè dovresti fare quanto meno f.mkDir()

Offline michele88

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung N7100
  • Sistema operativo:
    Windows 8.1
Re:file.exists() non funziona!
« Risposta #8 il: 03 Marzo 2015, 23:25:19 CET »
0
Codice (Java): [Seleziona]
private void createFileBookmarks(){ //crea il file | testato funziona
                try {
                    FileOutputStream bookmarksFile = openFileOutput("bookmarksFile.xml", Context.MODE_APPEND);
                    bookmarksFile.write("<Bookmarks>\n".getBytes());
                    bookmarksFile.write("<Newspapers>\n".getBytes());
                    bookmarksFile.write("\n".getBytes());
                    bookmarksFile.write("</Newspapers>\n".getBytes());  
                    bookmarksFile.write("<Section>\n".getBytes());
                    bookmarksFile.write("\n".getBytes());
                    bookmarksFile.write("</Section>\n".getBytes());  
                    bookmarksFile.write("</Bookmarks>\n".getBytes());  
                    bookmarksFile.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    if (Configuration.DEBUGGABLE) Log.e(TAG,"error "+e.toString());
                }
        }

questo mi crea un file in data/data/package/files/..... non so che dirti :P

Offline tonno16

  • Utente storico
  • *****
  • Post: 1189
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:file.exists() non funziona!
« Risposta #9 il: 03 Marzo 2015, 23:54:36 CET »
0
Ora hai indicato info che prima non c'erano ;)
Context.MODE_APPEND, e FileOutputStream, che è diverso da File. Non so allora. Mai usato l'opzione per i file con Context.Mode

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:file.exists() non funziona!
« Risposta #10 il: 04 Marzo 2015, 07:58:26 CET »
0
Leggermente off-topic: ti sconsiglio di evitare titoli tipo "file.exists() non funziona!", perchè ottieni solo il risultato di ricevere meno risposte, dato che ovviamente file.exists() funziona. Magari qualcosa tipo "ho un problema con file.exists()".
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline michele88

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung N7100
  • Sistema operativo:
    Windows 8.1
Re:file.exists() non funziona!
« Risposta #11 il: 04 Marzo 2015, 08:04:02 CET »
0
Giusto! Scusate!  Dopo modifico il titolo e segno il problema come risolto