Ich habe einen Ordner, der einige Dateien und einige Verzeichnisse enthält, die ich auf meiner SD-Karte/mnt/sdcard/Android/Daten/Pfad kopieren muss, während ich starte die Anwendung zum ersten Mal, und natürlich, wenn nicht schon der erforderliche Ordner ist nicht in diesem Pfad vorhanden.Kopieren von Verzeichnissen und Dateien von Res/Raw-Ordner auf SD-Karte - Android
Ich werde diesen Ordner in Res/Raw-Ordner meiner Anwendung haben.
Was sind die schrittweisen Verfahren, die ich tun muss, so dass ich den Ordner und seinen gesamten Inhalt von res/raw zum angegebenen Pfad auf der SD-Karte kopieren kann.
Jede Hilfe wird sehr geschätzt.
bearbeiten
Das Folgende ist die Lösung, wenn es jemand hilft anderes:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
copyFileOrDir("edu1");//directory name in assets
}
File sdCard = Environment.getExternalStorageDirectory();
private void copyFileOrDir(String path) {
AssetManager assetManager = this.getAssets();
String assets[] = null;
try {
assets = assetManager.list(path);
if (assets.length == 0) {
copyFile(path);
} else {
File dir = new File (sdCard.getAbsolutePath() + "/" + "Android/data");
//String fullPath = "/data/data/" + this.getPackageName() + "/" + path;//path for storing internally to data/data
//File dir = new File(fullPath);
if (!dir.exists()){
System.out.println("Created directory"+sdCard.getAbsolutePath() + "/Android/data");
boolean result = dir.mkdir();
System.out.println("Result of directory creation"+result);
}
for (int i = 0; i < assets.length; ++i) {
copyFileOrDir(path + "/" + assets[i]);
}
}
} catch (IOException ex) {
System.out.println("Exception in copyFileOrDir"+ex);
}
}
private void copyFile(String filename) {
AssetManager assetManager = this.getAssets();
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
//String newFileName = "/data/data/" + this.getPackageName() + "/" + filename;//path for storing internally to data/data
String newFileName = sdCard.getAbsolutePath() + "/Android/data/" + filename;
out = new FileOutputStream(newFileName);
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (Exception e) {
System.out.println("Exception in copyFile"+e);
}
}
}
Sie können etwas Code auf, was Sie bis jetzt getan haben? Es sieht so aus, als ob du nur sagst "Hier ist, was ich machen möchte, kodiere es jetzt für mich." –
nicht wirklich, ich bearbeite meine Frage. – user1400538