ファイルを File(String path) クラスに渡そうとしています。assets フォルダー内のファイルの絶対パスを見つけて File() に渡す方法はありますか。パス文字列として試しfile:///android_asset/myfoldername/myfilename
ましたが、うまくいきませんでした。何か案が?
107165 次
2 に答える
55
File
私の知る限り、アセット ファイルは apk に保存されているため、アセット ファイルから作成することはできません。つまり、アセット フォルダーへのパスがありません。
ただし、File
バッファとAssetManager
(アプリケーションの未加工のアセット ファイルへのアクセスを提供します) を使用して作成を試みることができます。
次のようなことをしてみてください:
AssetManager am = getAssets();
InputStream inputStream = am.open("myfoldername/myfilename");
File file = createFileFromInputStream(inputStream);
private File createFileFromInputStream(InputStream inputStream) {
try{
File f = new File(my_file_name);
OutputStream outputStream = new FileOutputStream(f);
byte buffer[] = new byte[1024];
int length = 0;
while((length=inputStream.read(buffer)) > 0) {
outputStream.write(buffer,0,length);
}
outputStream.close();
inputStream.close();
return f;
}catch (IOException e) {
//Logging exception
}
return null;
}
進捗状況をお知らせください。
于 2012-08-05T23:12:02.060 に答える
9
解凍しない限り、アセットは apk 内に残ります。したがって、ファイルにフィードできるパスはありません。質問で指定したパスは、WebView で/で機能しますが、それは WebView の特殊なケースだと思います。
ファイルを解凍するか、直接使用する必要があります。
Context がある場合はcontext.getAssets().open("myfoldername/myfilename");
、ファイルで InputStream を開くために使用できます。InputStream を使用すると、直接使用することも、どこかに書き出すこともできます (その後、File で使用できます)。
于 2012-08-05T21:28:06.947 に答える