我正在编写一个Android应用程序,我有一个非常令人沮丧的问题。 我将一些数据存储在“data”文件夹中名为“ouritems.xml”的XML文件中。 我有这个代码应该从这个文件中读取。
try {
File fXmlFile = new File("data/ouritems.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
nList = doc.getElementsByTagName("item");
}
catch(Exception e){
e.printStackTrace();
}
我尝试在普通的java应用程序中运行此代码,它运行正常。
但是,当我尝试运行Android应用程序时,我得到"File not found exception"
。
该文件存储在app文件夹中。我无法理解为什么找不到它。
这是某种Android权限问题吗?
答案 0 :(得分:2)
我实际上已经解决了这个问题。我把文件放在res / raw文件夹中。这是我能够以Android可以从中读取形式的方式实际保存文件的唯一方法。 (我正在测试的手机,甚至没有SD卡。)。然后我通过调用getResources()。openRawResource(R.raw.ouritems)来读取它。谢谢你让我走上了正确的道路! 我希望这对其他人有帮助。
答案 1 :(得分:1)
您需要正确指定文件的完整路径。 SD卡上的文件是?在apk原始资产文件夹中?您正在使用的文件路径是一个相对路径,它假设某个工作目录不能保证您在Android上的目的。
您应指定绝对路径,而不是相对路径。您正在测试的Android系统上文件的绝对路径是什么?
答案 2 :(得分:1)
你不能给你的src提供绝对路径,比如C:\ users ....你的apk将被安装在沙箱区域内。 / data / data是路径。如果您有一个包,例如com.example.test,那么您的路径将是/data/data/com.example.test/将您的路径指定为/data/data/ouritems.xml。如果你有一个包裹给予相应的。
答案 3 :(得分:0)
如果你的xml文件在SD卡中,你可以使用
File fXmlFile = new File(Environment.getExternalStorageDirectory()+"/ouritems.xml");
由于 迪帕克