[英]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.