编写 .json 文件并在 Android 中读取该文件
编写 .json 文件并在 Android 中读取该文件
我正在编写一个.json文件,想要读取该文件,但问题是,当我尝试将整个文件作为字符串读取时,它会在每个字符之前和之后添加空格,并且由于额外的字符,无法读取JSON。JSON格式如下:[{"description1":"The ThinkerA bronze sculpture by Auguste Rodin. It depicts a man in sober\nmeditation battling with a powerful internal struggle.","description2":"Steve JobsFounder of Apple, he is widely recognized as a charismatic pioneer of\nthe personal computer revolution.","description3":"Justin BieberBorn in 1994, the latest sensation in music industry with numerous\nawards in recent years."}]
,但它给出了奇怪的响应,如:[ { " d e s c r i p t i o n 1 " : " T h e ..... 为了去除额外的空格,我参考了这个链接,但仍然没有起作用:Java how to replace 2 or more spaces with single space in string and delete leading spaces only。我正在使用以下代码:
File folderPath = Environment.getExternalStorageDirectory(); File mypath=new File(folderPath, "description.json"); StringBuffer fileData = new StringBuffer(1000); BufferedReader reader = null; reader = new BufferedReader(new FileReader(mypath)); char[] buf = new char[1024]; int numRead=0; while((numRead=reader.read(buf)) != -1) { String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; } String response = fileData.toString();
,"response"字符串包含奇怪的响应,所以有人可以帮助我吗?对于写入文件,我使用:
FileOutputStream fos = new FileOutputStream(mypath); DataOutputStream dos = new DataOutputStream(fos); dos.writeChars(response);
。
写入.json文件并在Android中读取该文件的问题是由于writeChars方法将每个字符写入为两个字节导致的。writeChars方法是DataOutputStream类中的一个方法,它会将字符写入底层输出流,每个字符会被写入为一个2字节的值,高字节在前。如果没有抛出异常,写入的计数器会增加2。
解决这个问题的方法是使用其他方法来写入字符,例如使用BufferedWriter类的write方法。这个方法会将字符作为Unicode字符写入文件,不会将字符写入为两个字节。
以下是一个示例代码,展示如何使用BufferedWriter来写入.json文件,并使用BufferedReader来读取该文件:
// 写入.json文件 try { BufferedWriter writer = new BufferedWriter(new FileWriter("file.json")); writer.write("Hello, World!"); writer.close(); } catch (IOException e) { e.printStackTrace(); } // 读取.json文件 try { BufferedReader reader = new BufferedReader(new FileReader("file.json")); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException e) { e.printStackTrace(); }
通过使用BufferedWriter和BufferedReader来写入和读取.json文件,可以避免writeChars方法导致的字符被写入为两个字节的问题。这样可以确保在Android中正确地读写.json文件。
在Android开发中,有时候需要将数据保存到.json文件中,并且在需要的时候读取这个文件。下面的代码展示了如何在Android中写入和读取.json文件。
首先,我们需要创建一个名为MyJSON的类,并导入所需的包。这个类包含了两个静态方法:saveData和getData,分别用于写入和读取.json文件。
在saveData方法中,首先创建一个FileWriter对象,用于写入数据。然后,将传入的mJsonResponse字符串写入到文件中,并关闭文件。
在getData方法中,首先创建一个File对象,用于读取文件。然后,检查文件是否存在。如果文件存在,创建一个FileInputStream对象,并获取文件的大小。接下来,创建一个字节数组buffer,用于存储文件内容。最后,读取文件内容到buffer中,并将其转换为字符串返回。
要使用这个类,只需要将上述代码复制到你的项目中,并按照以下方式调用它:
保存数据:MyJSON.saveData(context, jsonData);
读取数据:String json = MyJSON.getData(context);
上述代码中的context参数是指当前的上下文,jsonData是要保存到.json文件中的数据。
通过这种方式,你可以方便地将数据保存到.json文件中,并在需要的时候读取出来。这对于在Android应用程序中存储和获取数据非常有用。
写入和读取 JSON 文件在 Android 中出现问题的原因是文件路径不正确。在这两个方法中,文件路径是固定的,而且是硬编码的。这样的路径可能会导致文件无法正确写入或读取。
解决这个问题的方法是使用 Android 提供的文件系统路径来获取应用程序的内部存储目录。可以使用 `getApplicationContext().getFilesDir().getPath()` 方法来获取应用程序的内部存储路径。然后,将文件名与该路径拼接起来,以确保文件被正确地写入和读取。
下面是修正后的方法:
用于写入 JSON 文件的方法:
public void mCreateAndSaveFile(String params, String mJsonResponse) { try { File file = new File(getApplicationContext().getFilesDir().getPath() + "/" + params); FileWriter fileWriter = new FileWriter(file); fileWriter.write(mJsonResponse); fileWriter.flush(); fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } }
用于读取 JSON 文件的方法:
public void mReadJsonData(String params) { try { File file = new File(getApplicationContext().getFilesDir().getPath() + "/" + params); FileInputStream fileInputStream = new FileInputStream(file); int size = fileInputStream.available(); byte[] buffer = new byte[size]; fileInputStream.read(buffer); fileInputStream.close(); String mResponse = new String(buffer); } catch (IOException e) { e.printStackTrace(); } }
通过使用正确的文件路径,这些方法将能够正确地写入和读取 JSON 文件。