2016-02-11 5 views
-1

Я хотел бы написать файл json на внутреннем хранилище, но я не могу его обработать. Вот мой код:Как написать файл JSON во внутреннем хранилище

String answers_json = data.getExtras().getString("answers"); 
      Log.d("****", "****************** WE HAVE ANSWERS ******************"); 
      Log.v("ANSWERS JSON", answers_json); 
      Log.d("****", "*****************************************************"); 

      try { 
       File file = new File (getFilesDir(),"answers.json"); 
       FileWriter fileWriter = new FileWriter(file); 
       BufferedWriter writer = new BufferedWriter(fileWriter); 
       writer.write("answers"); 
       writer.flush(); 
       writer.close() 

я пытался так много вариантов, но заканчивается всегда с ошибкой «Не удалось открыть» или всякий раз, когда все в порядке, ни один файл не находит на моем телефоне (это означает, что ничего не произошло). Что не так с моей стороны?

+0

Где вы храните этот файл? ;) – Fustigador

+0

Файл файла = новый Файл (getFilesDir(), "answers.json"); это лучше? –

+0

В вашем коде много ошибок. Я бы посоветовал вам потратить некоторое время на чтение ... Сначала вам нужно получить доступ к хранилищу, затем создать каталог (если применимо к вашему делу), а затем создать файл и написать на нем. есть много учебников. Просто пойдите в Google. – Fustigador

ответ

-1

Это может помочь вам:

private void downloadAndStoreJson(String url,String tag){ 

    JSONParser jParser = new JSONParser(); 
    JSONObject json = jParser.getJSONFromUrl(url);   

    String jsonString = json.toString();     
    byte[] jsonArray = jsonString.getBytes(); 

    File fileToSaveJson = new File("/sdcard/appData/LocalJson/",tag); 



    BufferedOutputStream bos; 
    try { 
     bos = new BufferedOutputStream(new FileOutputStream(fileToSaveJson)); 
     bos.write(jsonArray); 
     bos.flush(); 
     bos.close(); 

    } catch (FileNotFoundException e4) { 
     // TODO Auto-generated catch block 
     e4.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    finally { 
     jsonArray=null; 
     jParser=null; 
     System.gc(); 
    }} 
+1

''/sdcard/appData/LocalJson/"' <= плохая идея – Selvin

0

Я получил его. Это работает на меня ...

  try { 
       String FILENAME = "answers.json"; 
       FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_APPEND); 
       assert answers_json != null; 
       fos.write(answers_json.getBytes()); 
       fos.close(); 
      } 

      catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

приветствует и благодарит за помощь.