功能上解析/组装文件

时间:2017-10-18 18:23:36

标签: java functional-programming stream java-stream

我有一个我试图解析的sql文件。我可以轻松加载整个文件var vids = {first: 'https://www.youtube.com/embed/kxopViU98Xo?rel=0&showinfo=0?ecver=2;autoplay=1', second: 'https://www.youtube.com/embed/FWO5Ai_a80M?ecver=2;autoplay=1'}; 并正确分隔文件。但是,从挑战和学习的角度来看,我想应用一些功能foo和一些流来处理任意大小的文件。但是,这会变得更加棘手。

基本上我需要:

  1. 加载一个任意的数据缓冲区(比如说,我可以使用一条线) Java的jQuery('.play-circle').click(function(){ jQuery('.play-circle').fadeOut(0); jQuery('.video').fadeIn(0); jQuery('.video-close').fadeIn(0); jQuery('#' + this.id + 'Video').attr('src',vids[this.id]); }); 来传播那些
  2. 继续连接这些行,直到有分隔符string.split(";")
  3. 发出连锁结果
  4. 在分隔符
  5. 之后启动新的sql命令
  6. 最终结果:BufferedReader表示要执行的所有sql命令
  7. 以下是一个示例:

    ;

    低效的Java来完成这项工作:

    List<String>

    如何使用流和函数编程来处理任何大小的文件?非Java答案是受欢迎的,因为Java可能无法使用本机库

1 个答案:

答案 0 :(得分:1)

使用扫描仪:

try (Scanner s = new Scanner(new File("/path/to/file.txt"))) {
    s.useDelimiter(";");
    Spliterator<String> splt = Spliterators.spliterator(s, Long.MAX_VALUE, Spliterator.ORDERED | Spliterator.NONNULL);
    StreamSupport.stream(splt, false).filter(x -> !x.isEmpty()).forEach(executeSql);
}