读取带有多个标志java的纯文本文件

时间:2016-11-29 19:00:20

标签: java file-io java.util.scanner

我有一个纯文本文件,格式如下:

-~-http://www.google.com
    -@-Google+
    -@-About Google
-~-http://www.somewebpage.com
    -@-A
       Google
       Search
    -@-How to Google
-~-http://www.mycoolwebpage.com
    -@-Google is Awesome!!!

我需要阅读链接(用 - 〜 - 表示),并将它们放在List<String>被叫链接中。我还需要读取输出(用 - @ - 表示)并将它们放在List<List<String>>调用的输出中。我需要读取所有文本到下一个标志( - 〜 - / \ t - @ - ),我还需要知道文本前面的哪个标志。我试过了Delimiter,但我不确定我能否知道Delimiter

之前的哪个String

1 个答案:

答案 0 :(得分:1)

我会避免使用扫描仪分隔符。只需读取每一行并在代码中处理它。对于每一行,首先扔掉(或忽略)任何前导空格。然后,如果该行以分隔符开头,则包装任何挂起的链接/输出(请参阅下面的含义)。然后,

  • 如果该行以-~-开头,那么从该行到行尾的文本就是链接的开头,所以开始累积链接文本(在StringBuilder中)。此外,如果您有非空输出列表,请将列表附加到列表output列表中。
  • 如果它以-@-开头,则它是输出的开头,所以开始累积输出文本。
  • 如果它既不以分隔符开头,也是连续行,那么将该行的其余部分附加到当前链接/输出累加器(可能在追加空格或换行符之后)。

要“结束任何待处理的链接/输出”,请将StringBuilder的当前内容转换为String并添加到相应的列表中。同时将任何非空输出列表附加到output

这里有很多簿记细节,我没有提到,但这是基本的想法。