有什么方法可以将路径元素流到具有Akka流的内容线流



我正在尝试创建一个处理路径元素的Javadsl流。它应发出与路径元素关联的文件的内容线。换句话说,我认为我需要将路径元素的流变为字符串元素。

流动确实具有平坦的方法,但它涉及使用扁平膜,我不确定如何将其用于我的情况。

final Flow<Path, String, BoxedUnit> toFileLines = Flow
    .<Path>create()
    .flatten(FlattenStrategy.

任何帮助都非常感谢!

edit1:因此,据我了解,使用StreamReader读取文件并在读者到达' n'时发出新字符串可能是一个好主意。因此,现在的问题是如何从单个转换方法中散发多个元素。喜欢

final Flow<Path, String, BoxedUnit> toFileLines = Flow
    .<Path>create()
    .mapAsync(
            //create streamreader
            //while streamreader has.next
                //read line until n
                //emit line
    );

这是可能的吗?

我建议使用 Flow.flatMapConcat。首先,您必须编写一个源,该源将从文件中产生线路,然后将FlatmapConcat一起使用。我还使用我从文档中获得的框架也有一些bytestring解析:

import java.io.File;
import akka.stream.javadsl.FileIO;
import akka.stream.javadsl.Flow;
import akka.stream.io.Framing;
import akka.util.ByteString;
int maxLineSize = 1024;
final ByteString delim = ByteString.fromString("rn");
final Flow<String, String, BoxedUnit> pathsToContents = 
  Flow.of(String.class)
      .flatMapConcat(path -> FileIO.fromFile(new File(path))
                                   .via(Framing.delimiter(delim, maxLineSize,true))
                                   .map(byteStr -> byteStr.utf8String()));

相关内容

  • 没有找到相关文章

最新更新