Java BufferedReader错过了一些值

时间:2015-08-20 05:40:40

标签: java bufferedreader named-pipes

我遇到了BufferedReader的问题。

我的源代码工作正常,但问题是当我从命名管道读取一个值时,它错过了一些值。

delim="\t";
reader = new BufferedReader(new FileReader("/tmp/base.pip"));
while ((line = reader.readLine())!=null) {
            try{
             timestamp = Long.parseLong(line.split(delim)[0]);
            }
            catch(Exception e){
                continue;
            }

我需要读取整行以正确获取第一列值。

例如

原始行:12345678 A B

readed line:2345678 A B(错过第一位)

有什么建议可以解决这个问题吗?

p.s它运行正常,但只有几行有问题,如上面的例子。

2 个答案:

答案 0 :(得分:0)

尝试将它与Whitspaces分开并取出第一个数组:

delim = "\\s";
timestamp = Long.parseLong(line.split(delim)[0]);

我认为这可以解决你的问题。

答案 1 :(得分:0)

我已经测试了您的程序,它在我的计算机上运行正常。

  1. 检查您的delim String delim = "\t"
  2. 检查您的文件,它们之间有一个tab分隔符。
  3. 检查程序中的line值。
  4. 如果您没有标签空间,请考虑使用接受任意数量空格的正则表达式。

    String delim = "\\s+";
    

    delim = '\t'

    拆分不能将角色作为分隔符。请检查一下。它必须是delim = "\t"