首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用apache Commons合并两个文件的有效方法

使用apache Commons合并两个文件的有效方法
EN

Stack Overflow用户
提问于 2022-10-10 16:35:11
回答 1查看 46关注 0票数 0

我有两个巨大的文件,我需要合并到另一个文件。目前,我正在使用Apache Commons VFS连接到sftp服务器并合并它们。我使用下面的逻辑合并文件

代码语言:javascript
复制
for(String file: filesToMerge){
try(             FileObject fileObject= utility.getFileObject();
                 OutputStream fileOutputStream= fileObject.resolveFile(pathToExport+"file3.txt").getContent().getOutputStream(true);
                 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "ISO-8859-1");
                 BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter)
            ) {
          
                String content=  fileObject.resolveFile(pathToExport+file).getContent().getString("ISO-8859-1");
                bufferedWriter.write(content);
                log.info("process completed");

            } catch (Exception e) {
                log.error("Error while mergingfiles. The error is: " + e);
            } finally {
                log.info("closing FTP session ");
            }
            }

这些文件很大,我的内存也很有限。是否有任何有效的方法来更快地合并文件,而不是将整个内容作为字符串?使用像apache-commons-io这样的第三方库而不是BufferedWriter可以提高性能吗?

EN

回答 1

Stack Overflow用户

发布于 2022-10-10 17:21:30

是的,正确的方法是在FileContent文档页面的顶部编写:

若要从文件中读取,请使用由InputStream ()返回的getInputStream()。

所以,用以下方法替换你拥有的:

代码语言:javascript
复制
fileObject.resolveFile(pathToExport+file).getContent()
        .getInputStream()
        .transferTo(fileOutputStream);

请注意,您的代码目前并不合并这些文件,而是用每个新文件覆盖file3.txt。您可能应该附加到输出流,而不是覆盖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74018059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档