Jika Anda membuat objek File yang membungkus direktori tingkat atas, Anda dapat memanggilnya metode mkdirs () untuk membangun semua direktori yang diperlukan. Sesuatu seperti:
// create a File object for the parent directory
File wallpaperDirectory = new File("/sdcard/Wallpaper/");
// have the object build the directory structure, if needed.
wallpaperDirectory.mkdirs();
// create a File object for the output file
File outputFile = new File(wallpaperDirectory, filename);
// now attach the OutputStream to the file object, instead of a String representation
FileOutputStream fos = new FileOutputStream(outputFile);
Catatan: Mungkin bijaksana untuk menggunakan Environment.getExternalStorageDirectory () untuk mendapatkan direktori "Kartu SD" karena ini dapat berubah jika ada telepon yang memiliki sesuatu selain Kartu SD (seperti flash yang terpasang di dalam, seperti iPhone). Bagaimanapun Anda harus ingat bahwa Anda perlu memeriksa untuk memastikan itu benar-benar ada karena Kartu SD dapat dihapus.
UPDATE: Sejak API Level 4 (1.6) Anda juga harus meminta izin. Sesuatu seperti ini (dalam manifes) harus berfungsi:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Mengalami masalah yang sama dan hanya ingin menambahkan bahwa AndroidManifest.xml juga memerlukan izin ini:
sumber
Inilah yang bekerja untuk saya.
dalam manifes Anda dan kode di bawah ini
sumber
Sebenarnya saya menggunakan sebagian asnwer @fiXedd dan itu berhasil untuk saya:
Pastikan Anda menggunakan mkdir () bukan mkdir () untuk membuat jalur lengkap
sumber
File.mkdirs()
. Dia kemudian menunjukkan contoh menggunakannya.Dengan API 8 dan lebih besar, lokasi kartu SD telah berubah. @ fiXedd jawaban baik, tetapi untuk kode yang lebih aman, Anda harus menggunakan
Environment.getExternalStorageState()
untuk memeriksa apakah media tersedia. Maka Anda bisa menggunakannyagetExternalFilesDir()
untuk menavigasi ke direktori yang Anda inginkan (dengan asumsi Anda menggunakan API 8 atau lebih besar).Anda dapat membaca lebih lanjut di dokumentasi SDK .
sumber
Pastikan penyimpanan eksternal ada: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
sumber
Jangan lupa untuk memastikan bahwa Anda tidak memiliki karakter khusus dalam nama file / folder Anda. Terjadi pada saya dengan ":" ketika saya mengatur nama folder menggunakan variabel
tidak diperbolehkan karakter dalam nama file / folder
Anda mungkin menemukan kode ini membantu dalam kasus seperti itu.
Kode di bawah ini menghapus semua ":" dan menggantinya dengan "-"
sumber
Saya menghadapi masalah yang sama. Ada dua jenis izin di Android:
Berikut adalah strategi untuk mendapatkan izin berbahaya di Android 6.0
onRequestPermissionsResult
Inilah kasus saya: Saya perlu menulis ke penyimpanan eksternal.
Pertama, saya memeriksa apakah saya memiliki izin:
Kemudian periksa persetujuan pengguna:
sumber
Saya menghadapi masalah yang sama, tidak dapat membuat direktori pada Galaxy S tetapi berhasil membuatnya pada Nexus dan Samsung Droid. Cara saya memperbaikinya dengan menambahkan baris kode berikut:
sumber
ini akan membuat folder bernama dor di sdcard Anda. kemudian untuk mengambil file untuk eg- filename.json yang dimasukkan secara manual ke folder dor . Suka:
<menggunakan-izin android: name = "android.permission.WRITE_EXTERNAL_STORAGE" />
dan jangan lupa untuk menambahkan kode dalam manifes
sumber
sumber
Hanya menyelesaikan pos Vijay ...
Nyata
Fungsi
Pemakaian
Anda dapat memeriksa kesalahan
sumber
sumber
Anda dapat menggunakan / sdcard / bukannya Environment.getExternalStorageDirectory ()
sumber
sumber