【发布时间】:2019-12-27 11:04:25
【问题描述】:
我要使用的日志文件是制表符分隔的,如下所示:
2019-06-06 10:01:02 1.0
2019-06-06 10:25:12 100.0
2019-06-06 11:02:32 2.0
我使用以下代码扫描文件:
import java.util.*;
import java.io.*;
public class FirstTry {
public static void main(String[] args)
{
String fileName = "LogFile.csv";
File file = new File(fileName);
try
{
Scanner inputStream = new Scanner(file);
while (inputStream.hasNext()){
String data = inputStream.nextLine();
String[] values = data.split("\\t");
System.out.println(values[0] + " " + values[1]);
}
inputStream.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
线
System.out.println(values[0] + " " + values[1]);
打印以下工作输出:
2019-06-06 10:01:02
2019-06-06 10:25:12 100.0
2019-06-06 11:02:32
但是
System.out.println(values[0] + " " + values[2]);
打印:
2019-06-06 10:01:02 1.0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
为什么会在 values[2] 而不是 values [1] 中引发此异常?
编辑: 标有标签(共 5 个)的日志文件的 Sublime Text 屏幕截图:
编辑 2:
String[] values = data.split("\\t+");
System.out.println(values[0] + " " + values[1]);
打印:
2019-06-06 10:01:02 1.0
2019-06-06 10:25:12 100.0
2019-06-06 11:02:32 2.0
System.out.println(values[0] + " " + values[2]);导致java.lang.ArrayIndexOutOfBoundsException
【问题讨论】:
-
日期和时间之间真的有制表符吗?
-
你确定有一个标签(正如@RobAu所说)?这将是唯一的解释。
-
我编辑了问题并发布了日志文件的屏幕截图。
-
尝试在
\\t+上拆分以处理多个连续的标签。
标签: java java.util.scanner next