2014-02-17 53 views
-1

我有大量的文件已被返回作为查询的答案。我想要聚合列表显示给用户。之前当文件很小时,我会单独读取它们,并将结果汇​​总到第三个文件中,但现在即使读取也意味着延迟几秒钟,这是用户无法容忍的。有什么办法可以缝合文件并将汇总的结果呈现给用户?关于拼接文件

早些时候我试图像这样的命令“猫文件1 fiile2 >>文件3”,它无缝整合了文件1的内容和文件2到文件3但是当我做

进程p =调用Runtime.getRuntime此命令不起作用() .exec(“cat file1 fiile2 >> file3”); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

+1

您需要提供一些实施细节。汇总文件是否是单个文件的串联?或者是有一些处理(即删除重复等)。 –

+0

我不会推荐使用'Runtime.exec()' –

+0

是的聚合文件只是个别文件的连接.... –

回答

0

从您正在使用的shell脚本判断,您的“聚合”实际上只是连接文件。

如果是这种情况,那么你只需要像这样:

OutputStream os = ... 

    byte[] buffer = new byte[8192]; // or maybe a bit bigger 
    int nosRead; 
    try (InputStream is = new FileInputStream("file1")) { 
     while ((nosRead = is.read(buffer)) > 0) { 
      os.write(buffer, 0, nosRead); 
     } 
    } 
    try (InputStream is = new FileInputStream("fiile2")) { 
     while ((nosRead = is.read(buffer)) > 0) { 
      os.write(buffer, 0, nosRead); 
     } 
    } 

无需使用外部命令来连接文件。直接进行“拼接”(如上所述)意味着您将立即开始向用户发送数据。假设这就是你的“拼接”,那么不应该有必要使用读者/写者,并且避免这样做会让这一点变得更快。