簡體   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