我正在尝试开发一个小应用程序,在那里我获得了一个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并打开它。
答案 0 :(得分:0)
修改强>
您需要将该文件放入设备中,如果该文件位于您的计算机上,则无法从您的设备访问该文件。有一些方法可以做到这一点,其中一种方法是将它放在应用程序的res / dir中。请参阅documentation了解如何操作。
调试它。我很确定它很容易找到。首先,请查看以下内容:
在创建文件之前打印路径,例如Log.d("SomeTag", path + "/JSON file/gallery.json")
观察完整的异常详情。也许还有另一个问题。
浏览文件夹并查看文件是否存在(在eclipse:window - > show view - > other - > android - > file explorer。
您可能会发现问题并能够解决问题。如果没有,请在此处发布一个更详细的问题,包括这些试验的结果。
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();
}