当前位置: 首页 > 知识库问答 >
问题:

Vertx在单个文件中合并多个文件的内容

元英朗
2023-03-14

在vertx中将多个文件的内容附加到单个文件中的最佳方式是什么?我尝试过vertx文件系统和asyncFile,但它们都没有附加文件的选项,或者我不知道有任何附加文件。是否有其他方法可以在vertx中异步合并或附加文件。

我能找到的唯一解决方案是制作缓冲区列表并使用循环将内容写入每个先前缓冲区长度的末尾。

共有1个答案

云景焕
2023-03-14

事实上,从Vert开始。x 3.4,在文件系统上没有辅助方法将文件附加到另一个文件。

您可以使用异步文件(AsyncFile)和泵(Pump),如下所示。

首先创建一个实用程序方法来打开文件:

Future<AsyncFile> openFile(FileSystem fileSystem, String path, OpenOptions openOptions) {
  Future<AsyncFile> future = Future.future();
  fileSystem.open(path, openOptions, future);
  return future;
}

然后使用另一个泵将文件附加到另一个文件:

Future<AsyncFile> append(AsyncFile source, AsyncFile destination) {
  Future<AsyncFile> future = Future.future();
  Pump pump = Pump.pump(source, destination);
  source.exceptionHandler(future::fail);
  destination.exceptionHandler(future::fail);
  source.endHandler(v -> future.complete(destination));
  pump.start();
  return future;
}

现在,您可以将它们与顺序合成结合起来:

void merge(FileSystem fileSystem, String output, List<String> sources) {
  openFile(fileSystem, output, new OpenOptions().setCreate(true).setTruncateExisting(true).setWrite(true)).compose(outFile -> {
    Future<AsyncFile> mergeFuture = null;
    for (String source : sources) {
      if (mergeFuture == null) {
        mergeFuture = openFile(fileSystem, source, new OpenOptions()).compose(sourceFile -> {
          return append(sourceFile, outFile);
        });
      } else {
        mergeFuture = mergeFuture.compose(v -> {
          return openFile(fileSystem, source, new OpenOptions()).compose(sourceFile -> {
            return append(sourceFile, outFile);
          });
        });
      }
    }
    return mergeFuture;
  }).setHandler(ar -> {
    System.out.println("Done");
  });
}
 类似资料:
  • 问题内容: 我有一个要合并的文件数组。这是我尝试过的,但是没有用。 问题答案: 使用IOUtils可以做到这一点。看我的例子: 如果您不能使用IOUtils lib,请编写自己的实现。例:

  • 问题内容: 我有一个包含数千个.txt文件的文件夹。我想根据以下模型将它们合并到一个大的.csv文件中: 我发现应该执行此工作的R脚本(https://gist.github.com/benmarwick/9265414),但它显示此错误。 我不明白我的错是什么。 没关系,我很确定没有R也可以做到这一点。如果您知道一个非常优雅和简单的方法,将不胜感激(这对像我这样的很多人很有用) 精度:文本文件为

  • 问题内容: 我在Web应用程序中使用jquery,我需要将更多jquery脚本文件加载到单个页面中。 Google建议我将所有jquery脚本文件合并到一个文件中。 我怎样才能做到这一点? 问题答案: 在Linux上,您可以使用简单的Shell脚本将多个javascript文件合并为一个。它利用了Closure Compiler在线服务,因此生成的脚本也得到了有效压缩。

  • 本文向大家介绍Python将多个excel文件合并为一个文件,包括了Python将多个excel文件合并为一个文件的使用技巧和注意事项,需要的朋友参考一下 利用Python,将多个excel文件合并为一个文件 思路 利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中。 完整代码 源文件excel1: 源文件e

  • 如果我有一些文件,每个文件都有一个页面,我想使用 我在这里读到了几十个关于相同的问题,但大多数问题都已经过时或不再适用于

  • 问题内容: 我正在尝试将多个JSON文件组合到Ubuntu平台中。例如,来自两个文件的数据如下: 文件_1 文件_2 我写了一个Python脚本来组合它们。我在每条记录之后添加了新行和逗号。 合并文件的输出为: 当我使用JSON Lint(http://jsonlint.com/)验证这些记录时,它告诉我该文件已损坏并且不是有效的JSON。即使花了一段时间,我也无法弄清楚合并的出了什么问题。如果有