Есть ли способ открыть файл как объект File из папки активов Android? - PullRequest
9 голосов
/ 13 апреля 2011

Я хотел бы получить размер файла файла, расположенного в каталоге ресурсов. Я видел много примеров, таких как

 InputStream myInput = appContext.getAssets().open() 

Я знаю, что могу определить размер файла, просто прочитав InputStream в цикле, но я ищу способ сделать это через File object.
Так что мне нужен путь к ресурсам, и это то, что я могу ' не определить ... Как получить этот путь?
Также пытался получить AssetFileDescriptor через appContext.getAssets().openFd() и openNonAssetFd(), но не повезло - получил FileNotFound или, возможно, сжатые исключения.
Кстати, эти методы openFd «довольно описаны» на developer.android.com.


Я попробовал следующий код:
file = new File(new URI("file:///android_asset/db/call3.db"));
Log.i(APP_TAG, "File name: "+file.getName());
Log.i(APP_TAG, "File path: "+file.getPath());
Log.i(APP_TAG, "File length: "+file.length());
Log.i(APP_TAG, "File isFile: "+file.isFile());
Log.i(APP_TAG, "File exists: "+file.exists());

который выводит в лог:
04-13 12: 10: 03.413: ИНФОРМАЦИЯ (6259): Имя файла: call3.db
04-13 12: 10: 03.432: ИНФОРМАЦИЯ (6259): Путь к файлу: /android_asset/db/call3.db
04-13 12: 10: 03.444: ИНФОРМАЦИЯ (6259): длина файла: 0
04-13 12: 10: 03.444: ИНФОРМАЦИЯ (6259): файл isFile: false
04-13 12: 10: 03.444: ИНФОРМАЦИЯ (6259): файл существует: false

конечно размер файла не 0, это 195 584 байта.

Ответы [ 2 ]

5 голосов
/ 13 апреля 2011

Как получить этот путь?

Пути нет.То, что вы ищете, не возможно, извините.

2 голосов
/ 13 октября 2011

Я не уверен, есть ли способ получить объект File из папки ресурсов, но чтобы узнать длину файла в одной строке, вы можете использовать следующий код.

AssetFileDescriptor afd = context.getAssets().openFd(fileName);
long size = afd.getLength();
...