JAVA:如何在tabstop delimitered txt.file中读取很长的行

时间:2016-04-29 15:43:54

标签: java bufferedreader readline

我想读一个.txt文件,它是tabstop格式的表格,如下所示:

1    ABC    short text
2    DEF    very very long text....
3    GHI    short text
4    JKL    short text

问题是,当文本很长时(这意味着只有几KB不是GB左右;-)),不是读取整行。 我用这段代码来阅读:

try {
     InputStream fis = new FileInputStream(file.getAbsolutePath());
     InputStreamReader isr = new InputStreamReader(fis, Charset.forName("ISO-8859-1"));
     BufferedReader br = new BufferedReader(isr);

     while ((line = br.readLine()) != null) {
           String[] values = line.split("\t", -1); // don't truncate empty fields
           System.out.println(values[0] + " " + values[1] + " " + values[2]);                  
     }
}

更好地解释问题: 上表的结果是这个(不应该):

1    ABC    short text
2    DEF    very very lo

1 个答案:

答案 0 :(得分:1)

您可以编写一个更复杂的解析器,它一次读取一个字符,直到将字符放入缓冲区,直到遇到TAB或EOL。在TAB中,处理缓冲区,增加列数,然后清除缓冲区。在EOL中,处理缓冲区,将列计数设置为0,然后清除缓冲区。