繁体   English   中英

JAVA:如何在制表符分隔的txt.file中读取很长的行

[英]JAVA: how to read very long lines in a tabstop delimitered txt.file

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

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

问题是,当文本很长时(不是几GB或大约KB,而是-KB),无法读取整行。 我使用以下代码进行阅读:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM