2017-05-27 35 views
0

urlからJSONファイルをロードするJavaプログラムを作成し、jsonオブジェクトをこれにプッシュしますurl 20秒ごとに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 です。また、スレッドを作成して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

本当にありがとう –

関連する問題