如何从我的android测试项目的assets文件夹加载文件



是否有方法获取assets文件夹中某个文件的文件对象。我知道如何加载这样一个文件的inputstream,但我需要一个文件对象而不是inputstream。

通过这种方式,我加载输入流

    InputStream in2 = getInstrumentation().getContext().getResources().getAssets().open("example.stf2");

但是我需要文件对象,这样文件就找不到了

File f = new File("assets/example.stf2");

找到了一个在我的情况下有效的解决方案,也许其他人也可以使用它。

从我的android测试项目中检索文件到输入流

InputStream input = getInstrumentation().getContext().getResources().getAssets().open("example.stf2");

在测试的android应用程序的ExternalCachedir上创建一个文件

File f = new File(getInstrumentation().getTargetContext().getExternalCacheDir() +"/test.txt");

将输入流复制到新文件

FileUtils.copyInputStreamToFile(input, f);

现在我可以使用这个文件进行进一步的测试

尝试以下代码:-

AssetManager am = getAssets();
InputStream inputStream = am.open(file:///android_asset/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;
}

有关更多信息,请参阅以下链接:-

如何将资产文件夹中的文件路径传递到文件(字符串路径)?

相关内容

  • 没有找到相关文章

最新更新