Saya telah mencoba mendapatkan jalur URI untuk file aset.
uri = Uri.fromFile(new File("//assets/mydemo.txt"));
Ketika saya memeriksa apakah file tersebut ada, saya melihat file itu tidak ada
File f = new File(filepath);
if (f.exists() == true) {
Log.e(TAG, "Valid :" + filepath);
} else {
Log.e(TAG, "InValid :" + filepath);
}
Dapatkah seseorang memberi tahu saya bagaimana saya dapat menyebutkan jalur absolut untuk file yang ada di folder aset
file://android_asset/...
, di mana...
jalur relatif dalamassets/
direktori proyek Anda .file://android_asset/
, meskipun tidak untukUri
: github.com/commonsguy/cw-advandroid/tree/master/WebView/GeoWeb1file:///
.new File("file:///android_asset/sounds/beep.mid");
, tetapi file hasil tidak ada. Ada ide? File PS ada diassets/sounds/
folder.Url yang benar adalah:
di mana RELATIVEPATH adalah jalur ke sumber daya Anda relatif ke folder aset.
Perhatikan 3 / dalam skema. Tampilan web tidak akan memuat aset saya tanpa 3. Saya mencoba 2 seperti (sebelumnya) dikomentari oleh CommonsWare dan tidak akan berhasil. Kemudian saya melihat sumber CommonsWare di github dan melihat garis miring ke depan ekstra.
Pengujian ini meskipun hanya dilakukan pada emulator Android 1.6 tetapi saya ragu perbedaannya pada perangkat nyata atau versi yang lebih tinggi.
EDIT: CommonsWare memperbarui jawabannya untuk mencerminkan perubahan kecil ini. Jadi saya telah mengedit ini sehingga masih masuk akal dengan jawabannya saat ini.
sumber
String fileName = "file:///android_asset/file.csv";
System.out.println(new File(fileName).exists()); // prints false
File
yang menerima string mengharapkan jalur bukan URI . Saya belum membuat kode untuk Android selama beberapa tahun dan banyak hal mungkin telah berubah. Saya tidak yakin apakah Anda dapat mengakses folder aset yang disematkan menggunakan kelas File java normal. Sepertinya saya ingat bahwa Anda harus menggunakan AssetManager . File dalam folder assets ditempatkan di perangkat dalam paket APK hanya-baca dan dikompresi (APK sebenarnya adalah file zip), sehingga lebih banyak pekerjaan untuk membacanya kembali. Cobalah sesuatu sepertinew File(new URI(filename))
Silakan coba kode ini berfungsi dengan baik
sumber
Akhirnya, saya menemukan cara untuk mendapatkan jalur file yang ada di aset dari jawaban ini di Kotlin. Di sini kita menyalin file aset ke cache dan mendapatkan jalur file dari file cache itu.
Dapatkan jalur ke file seperti:
sumber
fileName
memiliki direktoridir/file
. Ini akan crash dengan jalur yangcache/dir/file
tidak ada. Juga saya pikir lebih baik memeriksaif(!it.exist)
di dalamalso
blok, maka itu tidak akan menyalin file setiap kali bahkan file sudah ada di cacheif(!it.exist)
menunjukkan kesalahan referensi yang belum terselesaikan. ada solusi?if(!it.exist)
harus menempatkan sebelumnyait.outputStream()
...Pastikan, folder aset Anda diletakkan di posisi yang benar.
sumber
sourceSets { main { assets.srcDirs = ['src/main/assets'] } }
Berfungsi untuk WebView tetapi tampaknya gagal
URL.openStream()
. Jadi, Anda perlu membedakan file: // protocols dan menanganinya melalui AssetManager seperti yang disarankan.sumber
Coba ini, berhasil:
Jika Anda mendapatkan Pengecualian Nilai Null, coba ini (dengan kelas
TopBrandData
):sumber
sumber
coba ini :
Saya telah melakukannya dan berhasil
sumber
Ya Anda tidak dapat mengakses folder drive Anda dari ponsel atau emulator android Anda karena komputer dan android Anda adalah dua OS yang berbeda. Saya akan menggunakan folder res android karena memiliki metode manajemen sumber daya yang baik. Sampai dan kecuali Anda memiliki alasan yang sangat bagus untuk meletakkan file Anda di folder aset. Sebaliknya Anda bisa melakukan ini
sumber
Berhasil untuk saya Coba kode ini
sumber