2012-03-21 63 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这个文件夹最后可以看到。序列化的bin文件的存储是这样的,一秒钟内创建的bin文件的数量存储在该“秒”文件夹中。也就是说,如果在17:15:32 pm创建了一个bin,bin文件将被存储在2012年 - > 3月 - > 21日期 - > 17小时 - > 15分钟 - > 32秒的文件夹下 - > 1个或更多的bin文件,取决于在那一秒创建了多少个bin文件。

如果我必须从这个层次结构中正常检索bin文件,我可以成功地为用户输入时间。但是如果给定时间间隔,比如说从17:15:35到17:20:35检索所有的bin文件,那么我将不得不返回在15分35秒,15分36秒得到的所有bin文件。 ...第16分钟第1秒等等,直到35秒20分钟;从而完全准确地完成5分钟的时间窗口并检索该间隔中的所有bin文件。此外,不必每秒发布一个bin文件,因为它可能发生在第二次或一分钟内,没有创建bin文件,因此第二个/分钟文件夹不存在于层次结构中。也就是说,也许是17:18:0到17:19:0,没有创建bin文件;可能/不可能创建bin文件的一致性。并且bin文件的所有数据都必须存储在一个字符串数组中。 无论我如何循环它,我无法达到预期的结果,所以我在这里提出基本代码。我如何去做呢?请帮助

回答

0

使用您的解决方案,您将创建数十亿个文件夹和文件,以存储String对象。更好地使用数据库并将字符串和实时时间戳添加到表中,以便在一段时间内轻松访问它们。这个wolud也适合并发用户访问。

+0

请问您可以说明一下,因为我可以使用实时时间戳吗? – kuki 2012-03-26 05:45:08

0

使用listFiles方法File类可以获取文件夹中的所有文件和文件夹。然后,您可以按名称对文件夹列表进行排序。例如,在文件夹15min中,您可能有文件夹09sec15sec55sec

使用(你需要添加前导零的笔记 - 09sec9sec)这个排序列表,你可以轻松抓取所有间隔15分钟02sec正确的子文件夹,以15分钟33sec:正确的子文件夹09sec15sec。为了解决这个问题,您可以简单地在整个文件夹树中以相同格式使用字符串比较边界。

相关问题