【问题标题】:Java BufferedReader read line by customized delimiter [duplicate]Java BufferedReader通过自定义分隔符读取行[重复]
【发布时间】:2017-05-06 09:53:26
【问题描述】:

BufferedReader's readline() 读取由'\n'定义的行,是否可以读取由其他分隔符定义的行,例如^B? 谢谢

【问题讨论】:

  • 不只是\n: "一行被认为是由换行符('\n')、回车符('\r')或回车符中的任何一个终止紧接着是换行符。”
  • 不,您不能直接使用 BufferedReader 执行此操作,但您可以读取字节并自行扫描自定义分隔符。
  • 那么写一个类似BufferedReader的类,覆盖readline()方法怎么样?

标签: java bufferedreader


【解决方案1】:

BufferedReader 无法做到这一点,但是,您可以使用Scanner 并调用useDelimiter() 方法,例如:

Scanner scanner = new Scanner(new FileInputStream("<file>"));
scanner.useDelimiter("\b");

Here'sjavadoc。

【讨论】:

  • 如果文件很大怎么办?会造成内存问题吗?
  • 如果您一次处理一行而不将所有内容都存储到内存中应该没问题。
  • 请注意,Scanner 不是线程安全的(关键方法不像 BufferedReader 的关键方法那样同步)。提问者可能知道(如果这是问题的原因,而不是不知道 Scanner 的存在,而不是只关心内存使用),但后来有相同问题的读者可能不知道,并且可能会被引导使用未提及多线程问题的 Scanner 的建议误入歧途。另请参阅stackoverflow.com/questions/31024254/…
猜你喜欢
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
相关资源
最近更新 更多