繁体   English   中英

如何使用两个获取相同文件的扫描仪处理

[英]How to handle with two Scanners which gets same file

我在处理两个并发的Scanner对象时遇到问题。

一台扫描仪用于确定文件中的行数,另一台扫描仪用于获取行并将其添加到阵列中。

原因是因为声明一个数组我们需要一个数组的大小,这就是为什么我使用第一个扫描仪。

我没有任何错误,只是一个空白的控制台。

File file = new File("E:\\"+fileName);
Scanner inputSize = new Scanner(file);
inputSize.next();
int size = 0;
while(inputSize.hasNext()) {
    size = size + 1;
}
inputSize.close();
Scanner inputStream = new Scanner(file);
PermissionSetTabSetting[] record = new PermissionSetTabSetting[size];
PermissionSetTabSetting tabSetting;
int count = 0;
inputStream.next();
System.out.println(inputStream.hasNext());
for(count = 0; inputStream.hasNext() ; count++) {
    tabSetting = new PermissionSetTabSetting();
    String data = inputStream.next();
    String[] permissionSetTabValues = data.split(",");
    System.out.println("Line:" + data);
}

如果只需要第一台扫描仪来确定第二台扫描仪的阵列大小,则只需使用一个列表即可。 然后,当由于其他原因需要大小时,当列表已满时,可以执行listName.size()

如果您正在读取文本文件,为什么不使用Java 7 Files.readAllLines 它将所有行存储到List<String> ,然后您可以使用列表大小实例化数组,如ryburger所说:

List<String> data = Files.readAllLines(new File("E:\\" + filename).toPath());
PermissionSetTabSetting[] record = new PermissionSetTabSetting[data.size()];

暂无
暂无

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

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