【问题标题】:Reading a plain text file with multiple flags java读取具有多个标志的纯文本文件java
【发布时间】:2016-11-29 19:00:20
【问题描述】:

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

-~-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,但我不确定我是否能够知道DelimiterString 之前

【问题讨论】:

  • 您需要发布一些代码以供人们帮助您。
  • 只读取每一行并在代码中处理,读取文件时不使用特殊分隔符。
  • @Alexey Soshin 我试图弄清楚我应该怎么做。我的代码是一个方法调用:Scanner s = new Scanner(new File("myFile.txt"));
  • @Ted Hopp 我不知道怎么做。我必须阅读所有内容,直到下一个标志。如您所见,我的一些 -@- 标志对于一个标志有多行。

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


【解决方案1】:

我会避免使用扫描仪分隔符。只需阅读每一行并在代码中处理它。对于每一行,首先丢弃(或忽略)任何前导空格。然后,如果该行以分隔符开头,则将任何未决的链接/输出包装起来(请参阅下文了解其含义)。那么,

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

要“打包任何挂起的链接/输出”,请将StringBuilder 的当前内容转换为String 并添加到相应的列表中。还将任何非空输出列表附加到output

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

【讨论】:

  • 正是我想要的。谢谢。
猜你喜欢
  • 2016-12-21
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 2011-05-05
相关资源
最近更新 更多