【问题标题】:How to get reference to a file inside a package如何获取对包内文件的引用
【发布时间】:2013-06-03 06:12:17
【问题描述】:

我有文件 kanji.xls。 我想通过 new File(); 获取该文件 我应该在那个构造函数里面写什么? 我尝试了很多选项,但没有找到正确的答案...



我试过了:

  1. /kanji.xls
  2. /汉字数据库/kanji.xls
  3. //汉字数据库//kanji.xls
  4. kanji.xls

【问题讨论】:

  • 你能发布你的代码吗?
  • sanbhat 整个代码是 workBook = Workbook.getWorkbook(new File("/kanji.xls"));我试图在 File 构造函数中放入很多东西,但我总是得到 FileNotFoundException

标签: java android file package


【解决方案1】:

在你的项目中使用assets 目录来存储这个文件并从那里读取文件。 Android – Read file from Assets 将指导您。

如果你不想使用assets目录,

将目录创建为Kanji_Database 而不是Kanji database。然后使用下面的代码。

File f= new File(Environment.getExternalStorageDirectory()
            + "/Android/data/" + getApplicationContext().getPackageName()
            + "/Kanji_Database/", "kanji.xls");

【讨论】:

  • 您的答案似乎是最好的,但通过资产我只能获取文件列表或打开流。如何使用资产来获取以后可以在 new File() 中使用的文件路径?
  • assets 目录中的文件没有被解压。它们直接从APK ZIP 文件中读取。所以你必须提取到一个字节数组,写入一个临时文件并加载该文件。你可以使用file:///android_asset/kanji.xls作为一个url。
  • 我设法用这样的资产做到了:workBook = Workbook.getWorkbook(assetManager.open("kanji_short.xls"));感谢您的帮助 :) 请确定,我放入包中的所有文件夹都将存在于 getApplicationContext().getPackageName() 中?
  • 您能告诉我 Assets 文件夹的物理位置吗?
  • 它在APK文件里面。因此您的应用中没有资产文件夹的物理路径。您可以使用file:///android_asset/kanji.xls 在资产中使用WebView 引用您的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2010-12-06
  • 2010-12-01
  • 2015-01-25
  • 1970-01-01
相关资源
最近更新 更多