如何将资产文件夹中的文件path传递给File(String path)?

可能重复:
Android的 – 如何确定从资产的特定文件的绝对path?

我正在尝试将文件传递给File(String path)类。 有没有办法find资产文件夹中的文件的绝对path,并将其传递给File()。 我试过file:///android_asset/myfoldername/myfilename作为pathstring,但它没有工作。 任何想法?

Related of "如何将资产文件夹中的文件path传递给File(String path)?"

AFAIK,你不能从资产文件创build一个File ,因为它们存储在apk中,这意味着没有资源文件夹的path。

但是,您可以尝试使用缓冲区和AssetManager (它提供对应用程序的原始资产文件的访问)来创build该File

尝试做一些事情:

 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; } 

让我知道你的进步。

除非你解开它们,否则资产将保留在apk内。 因此,没有一个可以input到文件的path。 你在问题中给出的path可以在WebView中工作,但是我认为这是WebView的特例。

您需要解压缩文件或直接使用它。

如果你有一个Context,你可以使用context.getAssets().open("myfoldername/myfilename"); 在文件上打开一个InputStream。 使用InputStream,你可以直接使用它,或者把它写出来(之后你可以用File来使用它)。