我有大量文件作为查询答案返回。我希望聚合列表显示给用户。在文件较小的早期,我会单独阅读它们并将结果汇总到第三个文件中,但现在即使读取也意味着用户无法忍受的延迟几秒钟。有没有什么方法可以将文件拼接出来并将汇总结果呈现给用户?
之前我尝试过像“cat file1 fiile2>> file3”这样的命令,它无法将file1和file2的内容集成到file3中,但是当我这样做时这个命令不起作用
进程p = Runtime.getRuntime()。exec(“cat file1 fiile2>> file3”); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
答案 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);
}
}
无需使用外部命令来连接文件。直接进行“拼接”(如上所述)意味着您将立即开始向用户发送数据。假设这就是你的“缝合”的全部内容,那么就没有必要使用读者/写作者,并且避免这样做会让它更快一点。