简体   繁体   English

将json数据写入并读取到内部存储android

[英]Write and Read a json data to internal storage android

I have a json array received from php 我有从php收到的json数组

[  
   {  
      "name":"Daniel Bryan",
      "img":"pictures\/smallest\/dierdrepic.jpg",
      "username":"@dbryan",
      "user_id":"4"
   },
   {  
      "name":"Devil Hacker",
      "img":"pictures\/smallest\/belitapic.jpg",
      "username":"@dvHack",
      "user_id":"1"
   }
]
  • What i want is to write this data in a file_name.anyextension in my apps data folder or anywhere safe. 我想要的是这些数据写入我的apps数据文件夹中的file_name.anyextension或任何安全的地方。
  • Also read this data from file_name.anyextension and convert it to a valid json array that can be further edited. 还要从file_name.anyextension读取此数据并将其转换为可以进一步编辑的有效json array

Can anyone show me a way how can i possibly to this thing ? 任何人都可以告诉我一个方法我怎么可能这个东西?

private void writeToFile(String data) {
    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("config.txt", Context.MODE_PRIVATE));
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    } 
}


private String readFromFile() {

    String ret = "";

    try {
        InputStream inputStream = context.openFileInput("config.txt");

        if ( inputStream != null ) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ( (receiveString = bufferedReader.readLine()) != null ) {
                stringBuilder.append(receiveString);
            }

            inputStream.close();
            ret = stringBuilder.toString();
        }
    }
    catch (FileNotFoundException e) {
        Log.e("login activity", "File not found: " + e.toString());
    } catch (IOException e) {
        Log.e("login activity", "Can not read file: " + e.toString());
    }

    return ret;
}

When read string from file convert it to JsonObject or JsonArray 从文件读取字符串时将其转换为JsonObject或JsonArray

JSONArray jarray = new JSONArray(str);

Corrected answer of Morteza Soleimani for reading: 更正了Morteza Soleimani的答案:

public static String readFromFile(String path) {
    String ret = "";
    try {
        InputStream inputStream = new FileInputStream(new File(path));

        if ( inputStream != null ) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();
            while ( (receiveString = bufferedReader.readLine()) != null ) {
                stringBuilder.append(receiveString);
            }
            inputStream.close();
            ret = stringBuilder.toString();
        }
    }
    catch (FileNotFoundException e) {
        Log.e("FileToJson", "File not found: " + e.toString());
    } catch (IOException e) {
        Log.e("FileToJson", "Can not read file: " + e.toString());
    }
    return ret;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM