2017-05-27 64 views
0

我創建的Java程序從url加載JSON文件,我每20秒將json對象推送到此url我希望程序在此處更新的JSON文件是我的java代碼時發出通知如何使用java收聽JSON文件更新

package com.company; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.*; 
import java.net.URL; 
import java.nio.charset.Charset; 

public class Main { 
    private static String readAll(Reader rd) throws IOException { 
    StringBuilder sb = new StringBuilder(); 
    int cp; 
    while ((cp = rd.read()) != -1) { 
     sb.append((char) cp); 
    } 
    return sb.toString(); 
} 

public static JSONArray readJsonFromUrl(String url) throws IOException, JSONException { 
    InputStream is = new URL(url).openStream(); 
    try { 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
     String jsonText = readAll(rd); 
     JSONArray jsonArray = new JSONArray(jsonText); 
     return jsonArray; 
    } finally { 
     is.close(); 
    } 
} 

public static void main(String[] args) throws IOException, JSONException { 
    JSONArray json = readJsonFromUrl("http://frozen-brook-16337.herokuapp.com/history.json"); 
    for(int i=0;i<json.length();i++){ 
     JSONObject jo=json.getJSONObject(i); 
     System.out.println(jo.get("data")); 
    } 

} 

} 

如何讓java程序監聽JSON文件更新?

+0

你的問題是什麼? –

+0

我有更新的問題 –

+1

我沒有看到你的代碼已經改變了任何文件?你的代碼只是讀取數據並打印出來 –

回答

0

您需要創建一個調度程序,每20秒執行一次代碼。有多種方法可以實現這一點。

一個好的方法是使用類似Quartz Scheduler 或者爲了快速的解決方案,你也可以創建一個Thread並讓它的run()方法在一個循環中執行代碼。

public class MyPush implements Runnable { 

    public void run() { 
     long twentySeconds = 20*1000L; 
     while(true) { 
      //execute your code 
      Thread.sleep(twentySeconds); 
     } 
    } 

    public static void main(String args[]) { 
     (new Thread(new MyPush())).start(); 
    } 

} 
+0

謝謝你真的很有幫助它的工作像魅力 –