ورود

View Full Version : کپی یک فایل از فولدری در Assets به SdCard



c-sharp_South
پنج شنبه 22 مهر 1395, 09:28 صبح
سلام و خسته نباشید
من یک فایل mp3 مثلا با نام x.mp3 دارم.
پوشه assets رو ساختم و بعد توش یک Directory ایجاد کردم به نام myfolder و بعد فایل x.mp3 رو اونجا قرار دادم و توی برنامم خوندم.
الان میخوام کاربر اگر خواست با زدن یک کلید میتونه اون فایل رو از Assets/myfolder توی مسیر sdCard گوشی خودش در فولدری به نام ms ذخیره کنه
ممنون میشم راهنمایی کنید که چیکار کنم :قلب:

spiderman200700
پنج شنبه 22 مهر 1395, 12:31 عصر
سلام.
منظورتون از SDCard همون حافظه جداشدنیه گوشیه؟

اگر جواب مثبته ، باید بگم پیدا کردن مسیر SDCard همیشه یکی از مشکلات توسعه دهندگان اندروید بوده و خیلی ها مشکل دارن باهاش.

بنده یک لایبراری برای دسترسی به همه حافظه های موجود در دستگاه از جمله Internal Storage ، External Storage ، Secondry External Storage ، OTG و غیره توسعه دادم که تکمیل تر شده لایبراری آقای Jörg Wirtgen هست. که میتونید در اندروید 5 و پاینتر ازش استفاده کنید.

آدرس در GitHub:
https://github.com/omidfaraji/Environment3
(https://github.com/omidfaraji/Environment3)



با این کد هم میتونید فایل های Assets رو به مسیر دیگری کپی کنید:
private void copyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", "Failed to get asset file list.", e);
}
if (files != null) for (String filename : files) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
File outFile = new File(getExternalFilesDir(null), filename);
out = new FileOutputStream(outFile);
copyFile(in, out);
} catch(IOException e) {
Log.e("tag", "Failed to copy asset file: " + filename, e);
}
finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
// NOOP
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
// NOOP
}
}
}
}
}
private 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);
}
}