アセットフォルダーに、(InputStreamではなく)Fileオブジェクトに変換する必要のあるテキストファイルがあります。これを試したところ、「そのようなファイルはありません」という例外が発生しました。
String path = "file:///Android_asset/datafile.txt";
URL url = new URL(path);
File file = new File(url.toURI()); // Get exception here
これを変更して機能させることはできますか?
ちなみに、アセットフォルダー内のHTMLファイルを参照するプロジェクトの他の場所にある次のコードを見て、「例を使ってコード化」しようとしました。
public static Dialog doDialog(final Context context) {
WebView wv = new WebView(context);
wv.loadUrl("file:///Android_asset/help/index.html");
私は上記のメカニズムを完全に理解していないことを認めますので、私がやろうとしていることがうまくいかない可能性があります。
どうも!
アセットはファイルとして保存されていないため、アセットから直接File
オブジェクトを取得することはできません。アセットをファイルにコピーしてから、コピーでFile
オブジェクトを取得する必要があります。
アセットから直接Fileオブジェクトを取得することはできません。
まず、たとえば AssetManager#open を使用してアセットからinputStreamを取得します
次に、inputStreamをコピーします。
public static void writeBytesToFile(InputStream is, File file) throws IOException{
FileOutputStream fos = null;
try {
byte[] data = new byte[2048];
int nbread = 0;
fos = new FileOutputStream(file);
while((nbread=is.read(data))>-1){
fos.write(data,0,nbread);
}
}
catch (Exception ex) {
logger.error("Exception",ex);
}
finally{
if (fos!=null){
fos.close();
}
}
}