2011-08-11 4 views
2

Je dois faire un post HTTP en Java toutes les secondes après la construction d'un objet json. L'objet json est construit à partir de la lecture d'un fichier CSV qui est énorme (200Mbs +), donc mon problème est comment puis-je lire x nombre de lignes construire x objets et les publier toutes les secondes (comme il est impossible d'analyser tout 200mb fichier en moins d'une seconde) et continuez à lire les x lignes suivantes.Faire un post HTTP d'un objet JSON toutes les secondes

S'il vous plaît laissez-moi savoir vos pensées ..

Puis-je utiliser la classe Java timer, et continuer à lire le fichier CSV et chaque seconde en même temps l'objet poster JSON au serveur avec le JSON formé?

Répondre

0

Je le ferais en fonction de la taille du fichier et ne dépend pas de l'heure.

BufferedReader fin = null; //create it 
    Gson gson=new Gson(); //Google code open source library for JSON in Java 
    ArrayList<JSONObject> jsonList=new ArrayList<JSONObject>();  
    while (((line = fin.readLine()) != null)) { 
          if (line.length()==0){ 
           //"Blank line; 
          }else{ 
             currJSON=loadJSON(line);//You have to load it in a Java Object 

           if (jsonList.size()<MAX_JSON){ 
           jsonList.add(currJSON); 
          } 

     if (JsonList.size()==MAX_JSON){ //Define the maximum size of the list you want to post 
     gson.toJson(jsonList); //Convert to JSON 
     //You should post your Json with some Http Connection to your server 
    jsonList.clear(); 
1

Il est à peine possible de lire, analyser, convertir et envoyer un fichier de 200 Mo une fois par seconde.

Vous devez changer votre conception:

Ma suggestion serait de n'envoyer lignes modifiées, quelque chose comme ceci:

{ 
"1" : {"field1":"value1","field2":"value2"}, 
"17" : {"field1":"value1","field2":"value2"} 
} 

Ce qui bien sûr vous donne de nouveaux problèmes:

Le le client doit déterminer quelles lignes ont changé et le serveur doit intégrer les lignes modifiées aux données existantes.

Questions connexes