hi, How can I do to check if a DIR Exist on sd card and avoid the error if I try to open a file? Thank You in advance I tried so but I always return false If File.Exists(File.DirDefaultExternal& "/memoBackup/","*.*")=True Then Msgbox("True","") Else Msgbox("False","")...
File.DirAssets non è una "cartella" come le altre. non puoi creare "sub-cartelle".
per File.DirInternal, el tuo codice funziona se fai una prova dopo (almeno funziona per me)
B4X:
File.MakeDir(File.DirInternal,"NewFolder")
If File.Exists(File.DirInternal,"NewFolder") And File.IsDirectory(File.DirInternal, "NewFolder") Then
Log("OK in File.DirInternal")
End If
se vuoi sapere se esiste "NewFolder", fai la prova prima:
B4X:
If File.Exists(File.DirInternal,"NewFolder") = false Then
log("a creare la cartella...")
File.MakeDir(File.DirInternal,"NewFolder")
end if
' e dopo:
If File.Exists(File.DirInternal,"NewFolder") And File.IsDirectory(File.DirInternal, "NewFolder") Then
Log("OK in File.DirInternal")
End If
If File.Exists(File.DirInternal,"NewFolder") = false Then
log("a creare la cartella...")
File.MakeDir(File.DirInternal,"NewFolder")
end if
' e dopo:
If File.Exists(File.DirInternal,"NewFolder") And File.IsDirectory(File.DirInternal, "NewFolder") Then
Log("OK in File.DirInternal")
End If
Il codice semra che crea la cartella, infatti se ci passo la seconda vilta dice che esiste, ma su tablet non la trovo da nessuna parte, ne se la creo nella memoria interna nè su quella esterna.
Succede che solo la tua app può accedere a quella cartella, la DirInternal (non è per niente è... internal) e questo è un bene, nemmeno le altre app possono farlo.
Potresti vedere un file o cartella eventualmente creati nella DirRootExternal.
e non dimenticare il permesso per accedere a DirRootExternal. (DirInternal e meglio, ma l'app è tua).
rispetto alla nuova cartella, cosa vuoi dire cuando dici que non la trovi dopo crearla? se esiste, l'hai trovato. fai una piccola prova: crea un file di testo, salvalo nella nuova cartella e dopo aprilo per leggere il testo. se riesci, sono là
Sono di nuovo alle prese col dilemma delle cartelle.
Sto facendo un' app che ha un database interno che installo insieme all' app, dopo di che il database dovrebbe andare a prendere delle foto in una cartella del telefonino o tablet, in un percorso specifico.
In quale memoria mi consigliate di crearela cartella contenente le foto?
Va bene qui la domanda o devo aprire un nuovo thread?
stesso tema, stessoo filo. File.DirInternal. normalmente.
ma sappiamo poco (nulla) della app. e non sappiamo che cosa a che vedere il db con le foto... cosa stai pianificando?
e una volta di piu:
1) non dimenticare di copiare el db da dirassets a dirinternal al lanciare la app la prima volta. la prima prima volta.
2) non copiare el db ciecamente ogni volta che si lancia l'app. capisci? fai una prova ( se non esiste il db in file.dirinternal, allora copialo. se esiste e lo copi, lo soprascrivi. d'accord? un errore comune.
1-Come mai devo: non dimenticare di copiare el db da dirassets a dirinternal al lanciare la app la prima volta. la prima prima volta. ?
Risp- Il db lo tengo in dirassets. Ma se dite che è meglio copiarlo lo posso fare tranquillamente.
2-non copiare il db ciecamente ogni volta che si lancia l'app. capisci? fai una prova ( se non esiste il db in file.dirinternal, allora copialo. se esiste e lo copi, lo soprascrivi. d'accord? un errore comune.
Risp- si io lo installo solo se già non è presente anche perchè se non gli sovrascrivo le modifiche che man mano l' utente farebbe in locale sul telefonino.
L' unico cosa è che io l' ho sempre lascitato in dirassets. è due anni che io la uso.
Cmq la mia app ha delle tabelle in un db ogni tabella ha dei record con dei dati e delle foto associate ad ogni record. se decido di caricare la tabella X allora ho un tot di record ed ogni record che viene selezionato viene richiamata uno a più immagini associate a quel record.
L' utente può creare tabelle ex novo,aggiungere campi a tabelle ecc ed aggiungere foto apiacimento.
Quindi una volta installato il db vuoto l' utente lo popola a piacimento.
Io la usa da almeno tre anni sul mio tablet e non mi ha dato problemi.
Ma se decido di distribuirla vorrei non incasinare i telefoni della gente, per questo chiedo consiglio e poi ci sono le autorizzazioni da considerare.
1-Come mai devo: non dimenticare di copiare el db da dirassets a dirinternal al lanciare la app la prima volta. la prima prima volta. ?
Risp- Il db lo tengo in dirassets. Ma se dite che è meglio copiarlo lo posso fare tranquillamente.
non vai a incasinare i telefonini dei utenti non importa dove metti il db. si consiglia metterlo in dirinternal
poiché appartiene all'app. se vuoi usare direxternal, hai bisogno di un "permesso" (runtime permission). l'utente
non lo chiede, l'app lo chiede dal utente ("chiedo permesso di usare la tua camera"). google lo richiede. se
l'utente lo nega, l'app no funziona. punto. questo succede la prima volta che l'utente lancia l'app. se credi
che puoi lasciare il db in dirassets, va be'. non funzionerà, ma non incasinará il telefono.