2012-03-21 9 views
1

の異なるフォルダから複数のファイルを読むためにループ、それをデシリアライズし、文字列配列私はフォルダから複数のオブジェクトを取得するコードを持っている階層

public static String[] play(){ 
    int i = 0; 
    List<String> args = new ArrayList<String>(); 
     while (true) { 
     try { 
      args.add(processFile(i)); 
      System.out.println(i); 
      i++; 
     } 
     catch (Exception e) { 
      System.out.println("No more files"); 
      break; 
     } 
     } 
     String[] array = args.toArray(new String[0]); 
     return array; 
}  
private static String processFile(int fileNumber) throws Exception { 
    File file=new File("E:/proj/"+fileNumber+".bin"); 
    FileInputStream fin=new FileInputStream("E:/proj/"+fileNumber+".bin"); 

    //reading the byte content of the bin files 
    byte fileContent[] = new byte[(int)file.length()]; 
    fin.read(fileContent); 

    //store the deserialized object that is returned to an object. 
    Object obj=serializer.toObject(fileContent); 

    //converting the obtained object to string and storing it to args, a string[] 
    String word=obj.toString(); 
    return word; 
} 

}

これに追加しますサンプルコードは、この階層に続く "秒"フォルダを開くメッセージを取得します。 TIMESTAMP CHARTこのフォルダは最後に見ることができます。シリアライズされたビンファイルのストレージはそのようなもので、1秒で作成されるビンファイルの数はその "秒"フォルダに格納されます。つまり、ビンが17:15:32に作成された場合、ビンファイルは2012年→3か月→21日→17時間→15分→32秒のフォルダに格納されます。 > 1つ以上のbinファイルを作成します。

通常、この階層からbinファイルを取得する必要がある場合は、ユーザーが入力した時間に正常に実行できます。しかし、時間間隔が与えられたとすると、17:15:35から17:20:35までのすべてのbinファイルを取得すると、15分35秒35分36秒の取得済みのすべてのbinファイルが返されます。 ... 16分の1秒、20分の35秒まで。これにより、正確に5分の時間ウィンドウを完成させ、この間隔ですべてのビンファイルを検索する。また、毎秒ビンファイルを発行する必要はない。 binファイルは作成されていないため、second/minuteフォルダは階層に存在しません。つまり、17:18:0〜17:19:0の場合、binファイルは作成されませんでした。 binファイルの作成の一貫性がないかもしれません。 binファイルのすべてのデータは、1つの文字列配列に格納する必要があります。 どのようにループしても、私は希望の結果を得ることができませんでしたので、ここでは基本コードを設定しました。どのように私はそれをやって行くのですか?助けてください

答えて

0

あなたのソリューションでは、数十億のフォルダとファイルを作成するだけで、Stringオブジェクトを格納できます。より良いデータベースを使用し、文字列と実際のタイムスタンプをテーブルに追加するので、時間枠を超えて簡単にアクセスできます。このwoludは同時ユーザーアクセスにも適しています。

+0

実際のタイムスタンプをどのように使うことができるかを少し説明してください。 – kuki

0

FileクラスのlistFilesメソッドを使用すると、フォルダ内のすべてのファイルとフォルダを取得できます。このフォルダのリストを名前で並べ替えることができます。たとえば、フォルダ15分の場合、フォルダは09sec15sec55secです。このソートされたリストを使用して

(あなたが先行ゼロを追加する必要があることに注意してください - 09secない9sec)、あなたは簡単に15分33secに間隔15分02secのためのすべての正しいサブフォルダをつかむことができます。正しいサブフォルダが09sec15secです。これを理解するためには、このフォルダツリー全体にわたって同じフォーマットで境界の文字列比較を使用するだけです。

関連する問題