2015-01-15 64 views
0

我有一個.json文件,我使用像一個屬性文件。讀完json文件後,我從「Execute」節點獲得值,然後我想用「N」值更新「Execute」節點。java - 更新.json文件(使用json.simple)

我的json文件看起來像這樣。 { 「RunDate」: 「2015-01-12」, 「執行」: 「Y」}。我編寫了讀取json文件的代碼,並試圖通過編寫一個新文件來更新文件。

JSONParser parser = new JSONParser(); 
    try { 
     FileReader fr = new FileReader("c:\\B\\myControl.json"); 

     Object obj = parser.parse(fr); 

     JSONObject jsonObject = (JSONObject) obj; 
     ExecuteRun = (String) jsonObject.get("Execute"); 

     RunDate = (String) jsonObject.get("RunDate"); 
     //update 

     jsonObject.put("Execute", "N"); 
     jsonObject.put("RunDate", RunDate); 

     FileWriter file = new FileWriter("c:\\B\\mycontrol.json", true); 
     try { 
      file.write(jsonObject.toJSONString()); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      file.flush(); 
      file.close(); 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 

FileWriter行出現「訪問被拒絕」錯誤。

任何人都可以幫我嗎?

+0

是否有更優雅的方式來做到這一點? – ThomasDKim

+0

看起來你仍然在第一行打開文件(用於閱讀)。 –

+0

關閉FileReader。取決於很多事情,當別的東西正在讀取文件時,您通常無法寫入文件。 – immibis

回答

0

將此代碼

try (FileWriter file = new FileWriter("/C:/Users/itaas/Desktop/text1.txt")) { 
      file.write(js.toString()); 
      System.out.println("Successfully Copied JSON Object to File..."); 
      System.out.println("\nJSON Object: " + js); 

     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    }