编写 .json 文件并在 Android 中读取该文件

10 浏览
0 Comments

编写 .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);

0
0 Comments

写入.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文件。

0
0 Comments

在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应用程序中存储和获取数据非常有用。

0
0 Comments

写入和读取 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 文件。

0