ho bisogno di utilizzare alcuni file nella mia app. Sono conservati nella cartella degli asset. Ho visto discussioni su SO, dove i file vengono copiati dalla cartella delle risorse, in/data/data/sulla memoria interna e quindi utilizzati. Ricevo il codice, ma quello che non ottengo è, qual è la necessità di copiare le risorse nella memoria interna? Se qualcuno ha esperienza con questo, aiuto!Android - Copiare i file dalla cartella di beni/dati/dati
risposta
Prova questo: (utilizzare tutti e tre il suo metodo di lavoro per me e assegnare percorso di destinazione in "topath" oggetto stringa)
String toPath = "/data/data/" + getPackageName(); // Your application path
private static boolean copyAssetFolder(AssetManager assetManager,
String fromAssetPath, String toPath) {
try {
String[] files = assetManager.list(fromAssetPath);
new File(toPath).mkdirs();
boolean res = true;
for (String file : files)
if (file.contains("."))
res &= copyAsset(assetManager,
fromAssetPath + "/" + file,
toPath + "/" + file);
else
res &= copyAssetFolder(assetManager,
fromAssetPath + "/" + file,
toPath + "/" + file);
return res;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
private static boolean copyAsset(AssetManager assetManager,
String fromAssetPath, String toPath) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(fromAssetPath);
new File(toPath).createNewFile();
out = new FileOutputStream(toPath);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
return true;
} catch(Exception e) {
e.printStackTrace();
return false;
}
}
private static void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}
Giusta idea, ma non dovresti scrivere a fondo la directory/data (dato che è soggetta a modifiche) ma piuttosto scoprirla tramite l'API appropriata in fase di runtime. –
Dipende dall'utente, mi è stata fornita una risposta per copiare la cartella delle risorse in qualche percorso ... e se hai letto nuovamente la domanda l'utente chiede "/ data/data" in modo chiaro. –
@LavekushAgrawal questo codice copierà a ' "/ dati/data /" + getPackageName()' ... questo non è esattamente '/ dati/data /'. – ben75
Penso che non è possibile modificare/modificare i dati nella cartella di asset in fase di esecuzione o dopo l'installazione dell'applicazione. Così spostiamo i file nella cartella interna, quindi iniziamo a lavorarci sopra.
Uno dei motivi che appena spuntato per me è quando si utilizza il codice esistente C/C++ con NDK che richiede un percorso di un file e non si desidera modificare il codice.
Per esempio, sto usando una libreria C esistente che ha bisogno di alcuni file di dati e l'unica interfaccia esistente è un po ' "carico (char * path)" la funzione.
forse c'è in realtà un metodo migliore, ma non ho ancora trovato alcuna.
public final String path = "/data/data/com.aliserver.shop/databases/";
public final String Name = "store_db";
public void _copydatabase() throws IOException {
OutputStream myOutput = new FileOutputStream(path + Name);
byte[] buffer = new byte[1024];
int length;
InputStream myInput = MyContext.getAssets().open("store_db");
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
grazie :) mi ha salvato la giornata –
- 1. Maven Per copiare il file jar dalla cartella locale
- 2. Leggi file xml dalla cartella Asset Android
- 3. solo copiare i file all'interno di una cartella in Gulp
- 4. File batch per copiare i file da una cartella a un'altra cartella
- 5. Crea evento generazione preliminare per copiare i file nella cartella beni in applicazione Android
- 6. Apertura di un file dalla cartella delle risorse in Android
- 7. Come spostare/copiare un file da una cartella ad un'altra cartella in Android usando phonegap?
- 8. Android Studio - Creazione di moduli senza copiare i file?
- 9. Gradle: Escludi file dalla cartella delle risorse Android
- 10. Copiare solo i file esistenti con robocopy
- 11. Plugin file Cordova - Leggi dalla cartella www?
- 12. Come leggere i file dalla cartella delle risorse in Scala?
- 13. Typescript 1.8 modules: importa tutti i file dalla cartella
- 14. Serve i file dalla cartella all'esterno dell'applicazione Web nel molo
- 15. Come riprodurre i file audio direttamente dalla cartella res/raw?
- 16. Copia di directory e file dalla cartella res/raw alla scheda sd - android
- 17. Impossibile copiare i file Microsoft.SqlServer.Types
- 18. tsconfig.json - Crea solo file ts dalla cartella
- 19. Attività Gradle Android per copiare i file dopo la creazione
- 20. Come copiare i file di giada compilati in una cartella di destinazione utilizzando grugnito
- 21. Script di scala per copiare i file
- 22. Caricamento di file html in webview su Android dalla cartella delle risorse utilizzando Android Studio
- 23. come copiare più file in una cartella utilizzando xcopy
- 24. come copiare un file nella cartella condivisa capistrano
- 25. Java copiare una cartella escludendo alcuni file interno
- 26. Come copiare una cartella in wix
- 27. Copia i file dalla struttura delle directory ma escludi una cartella denominata
- 28. come posso copiare file nel file system di Android?
- 29. Come posso copiare file in C senza dipendenza dalla piattaforma?
- 30. Impostazione suoneria dalla mia cartella raw in Android
vedi [questa] (http://stackoverflow.com/questions/19218775/android-copy-assets-to-internal-storage) – user3355820
@ user3355820 ho capito come si possa copiare attivi nella memoria interna o archiviazione esterna. Ottengo entrambi sono possibili, per esempio, ecco alcuni esempi di codice per la copia di file da risorsa per la memoria interna - http://stackoverflow.com/questions/15574983/copy-directory-from-assets-to-local-directory. Quello che non capisco è, perché uno vorrebbe farlo. Qual è il significato della copia delle risorse nell'archiviazione interna/esterna. – superuser