Android文件未找到例外

时间:2011-06-27 04:05:51

标签: android

我正在编写一个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权限问题吗?

4 个答案:

答案 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");

由于 迪帕克