查找/读取文件时出现问题

时间:2011-07-20 21:12:36

标签: android

我正在尝试开发一个小应用程序,在那里我获得了一个JSON文件,我必须从中提取数据。据我所知,JSON对象采用字符串参数,因此我试图访问文件并将数据从中写入字符串。 我已将该文件放在“JSON文件”文件夹中,当我尝试读取该文件时,它会抛出一个未找到文件的异常。 我已经尝试了几种方法来找到该文件的路径,但每次尝试都是徒劳的。 可能是我正在提取错误的路径,或者可能是别的东西,请帮助我。 提前致谢。 这是寻找路径的代码:

 try
            {
                     path = Environment.getRootDirectory().getCanonicalPath();
            }
            catch (IOException e)
            {
                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }

            File jFile = new File(path + /"JSON file/gallery.json");

这是从文件中读取的代码:

 String str ="";
           try
           {
                    BufferedReader in = new BufferedReader(new FileReader(jFile));
                     while ((str += in.readLine()) != null)
                     {
                     }
             in.close();
            }
           catch (IOException e)
           {
                   e.getMessage();
            }
            return  str;

这里有更多规格: 我想从文件中获取数据:JSONObject(jString)。 当我提取json文件的路径时,我创建一个带有路径的文件,并将其传递给从文件中读取的函数,当我尝试从中读取时,它会抛出一个未找到文件的文件。 该文件确实存在于该文件夹中(即使在视觉上 - 我试图附加图像,但该网站不会让我,因为我是新用户) 我试图通过键入这样的路径通过Windows地址栏打开文件: C:\ Users \ Marat \ IdeaProjects \ MyTask \ JSON file \ gallery.json并打开它。

2 个答案:

答案 0 :(得分:0)

修改

您需要将该文件放入设备中,如果该文件位于您的计算机上,则无法从您的设备访问该文件。有一些方法可以做到这一点,其中一种方法是将它放在应用程序的res / dir中。请参阅documentation了解如何操作。


调试它。我很确定它很容易找到。首先,请查看以下内容:

  1. 在创建文件之前打印路径,例如Log.d("SomeTag", path + "/JSON file/gallery.json")

  2. 观察完整的异常详情。也许还有另一个问题。

  3. 浏览文件夹并查看文件是否存在(在eclipse:window - > show view - > other - > android - > file explorer。

  4. 您可能会发现问题并能够解决问题。如果没有,请在此处发布一个更详细的问题,包括这些试验的结果。

    BTW,GetgetRootDirectory()返回android的根目录,这不是你想要的(你没有RW权限)你可能想要获取applcation目录,你可以看到如何获取它{{ 3}}。但既然你没有给我们这些细节,那么就很难帮助你了。

答案 1 :(得分:0)

如果将其存储在assets文件夹中,则可以使用

访问它
InputStream is = context.getResources().getAssets().open("sample.json");

然后您可以将其转换为字符串

public static String inputStreamAsString(InputStream stream)
    throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(stream));
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = br.readLine()) != null) {
        sb.append(line + "\n");
    }
    br.close();
    return sb.toString();
}