Android:如何从资产文件创建File对象?

我在assets文件夹中有一个文本文件,我需要将其转换为File对象(而不是InputStream)。 当我尝试这个时,我得到“没有这样的文件”例外:

String path = "file:///android_asset/datafile.txt"; URL url = new URL(path); File file = new File(url.toURI()); // Get exception here 

我可以修改它以使其工作吗?

顺便说一下,我尝试“按示例编写代码”查看我的项目中其他地方的代码,该代码引用assets文件夹中的HTML文件

 public static Dialog doDialog(final Context context) { WebView wv = new WebView(context); wv.loadUrl("file:///android_asset/help/index.html"); 

我承认我并不完全理解上述机制,因此我可能无法正常工作。

谢谢!

  • 什么是readStream()方法? 我在任何地方找不到它,
  • android从资源文件夹共享图像
  • getAssets(); 来自另一个class级
  • 如何从assets文件夹加载video? (用VideoView播放)
  • Roboto字体是否适用于Android 4+?
  • 您无法直接从资产获取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(); } } } 

    代码中缺少此函数。 @wadali

     private void copyFile(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; int read; while((read = in.read(buffer)) != -1){ out.write(buffer, 0, read); } } 

    资料来源: https : //stackoverflow.com/a/4530294/4933464