- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试查看现有问题,但没有看到任何与我的问题相符的内容。
我正在尝试从 ftp 服务器读取一个包含 30000 行的文本文件。每行都是一 strip 有 ~ 分隔值的记录。
一旦我获得一条记录和这些值,我会将它们插入到表中。
我使用扫描仪类来扫描文件,然后对于每条记录,我使用另一个带有 ~ 分隔符的扫描仪类来读取这些记录。
该程序每天运行,大部分时间都可以顺利完成。
但偶尔会因 NoSuchElementException 失败。
我的日志显示,在某个时刻.. 比如说在 24000 条记录之后,下一行扫描仪获取的数据不完整。. 它获取部分行,然后分隔扫描仪无法读取下一个值并给出此错误。
如果我在同一个源文件上再次运行该程序。它将毫无问题地运行。我不确定这是否与环境或数据大小或代码有关。任何输入或检查方向将非常感激。或者有什么更好的建议..
我编写的方法的代码片段:
扫描仪读取 = 新扫描仪(is);//is 是输入流
String telNo, usrID, srvTyp, status, line;
read.nextLine(); // i am purposely skipping the first line
while (read.hasNextLine()) {
m_LogMgr.logMessage(LogManager.LOG_EVENT,
"before read.nextLine", 10, 2);
line = read.nextLine();
m_LogMgr.logMessage(LogManager.LOG_EVENT, line, 10, 2);
if (line == null || line.trim().length() < 1) {
m_LogMgr.logMessage(LogManager.LOG_EVENT,
"continue as i got a blank line", 10, 2);
continue;
}
Scanner read1 = new Scanner(line);
m_LogMgr.logMessage(LogManager.LOG_EVENT,
"after new read1 scanner", 10, 2);
read1.useDelimiter("~");
telNo = read1.next();
usrID = read1.next();
srvTyp = read1.next();
status = read1.next();
m_LogMgr.logMessage(LogManager.LOG_EVENT, telNo + " " + usrID
+ " " + srvTyp + " " + status, 10, 2);
callInsert(telNo, usrID, srvTyp, status);
m_LogMgr.logMessage(LogManager.LOG_EVENT, "after insert", 10, 2);
read1.close();
}
read.close();
....最后我关闭输入流并断开 ftpclient 的连接。
源文件中的示例记录:
8030180001~tdurgin1~INA~Y
8030180001~katrn50~IO15~Y
8030180002~里奇堡~IO15~D
失败时记录:
2018-03-05 04:48:10.846 8433823735~bobbyteetor~BN222~Y
2018-03-05 04:48:10.855 在新的 read1 扫描仪之后
2018-03-05 04:48:10.861 8433823735 bobbyteetor BN222 Y
2018-03-05 04:48:10.882 插入后
2018-03-05 04:48:10.895 在 read.nextLine 之前
2018-03-05 04:48:10.905 8433823736~gra
2018-03-05 04:48:10.906 在新的 read1 扫描仪之后
2018-03-05 04:48:10.991 e.toString =java.util.NoSuchElementException
最佳答案
显然,问题在于您的行 8433823736~gra
缺少足够的 token 来进行所有必要的 next()
调用。
考虑使用 if(read1.hasNext())
确保您首先拥有下一个 token 。
附带说明的是,为每一行创建一个扫描仪有点过大了。考虑只做 String[] tokens = read1.next().split("~");
并使用 tokens[0]
等。然后你马上就知道了,因为你应该有 4 个 token , if(tokens.length != 4) System.out.println("Skipping line "+ line + "because it is malformed");
关于Java Scanner 类给出 java.util.NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49116108/
此查询由 2 个相关问题组成。在进行下一步之前,我需要等待元素不可见,因此我尝试定义一个自定义方法,如下所示: public void waitToDisappear(long timeOutInSe
所以我有一个一年前编写的相当大的 java 应用程序,我试图再次理解它。我正在查看代码中的一个方法,其中明显存在出现 NoSuchElementException 的风险:我正在使用任意字符串构造的扫
我开始通过简单地读取数据文件来做练习。当我运行该程序时,数据文件被读取但没有读取,但出于某种原因我仍然收到“NoSuchElementException”并且我的输出没有按照预期的方式格式化。这是正在
我正在尝试逐行读取一个大型 csv 文件,以查找其中字符串出现的次数。 这是执行此操作的代码: public int getOffset(File file, String searched) thr
我的代码在使用扫描仪的每一行上都给出了 NoSuchElementException 异常。我的其余代码工作正常。 import java.io.*; import java.util.*; impo
当我运行我的程序时,我在 Eclipse 控制台中得到了这个: Type a number then press enter. 1. Add a customer 2. Add an order 3.
我想知道是否有人可以帮助解决我的程序中的 NoSuchElements 异常,该程序扫描非常大的文本,然后将其添加到 ArrayList 中。 我尝试重新排列代码的顺序,看看是否可以修复它,但现在我不
for (final ArrayList smartPhones : smartPhonesCluster) { new Thread(new Runnable() { @Ov
我想在客户端读取时设置超时。该例程应该抛出 InterruptedIOException,但它在 System.out.println("echo: " + _in.nextLine()); 上抛出
我在功能检查冲突方面遇到问题。无论我做什么,它都会抛出 NoSuchElementException。这是: public boolean isColliding(Pixel a) { if(
如果在读取文件时缺少字段,我应该捕获 NoSuchElementException。如果缺少一个字段,我只需要跳到文件的下一行。我的问题是,我在哪里实现我的 try/catch 代码来做到这一点?这是
我正在开发一种解析器(业余爱好项目),它采用 Cpp 文件,读取文件中的注释,然后尝试基于该文件创建头文件。 我面临的问题是当java.util.Scanner即将读取第一行时。程序停止并给出 NoS
我的任务是: 创建一个包含 2 列数字的文件:距离和速度。 编写一个 TravelInfo 类,其中包含三部分信息:速度、时间、距离。 该类还应该有一个方法 calcTime(),用于根据距离和速度计
在过去的几个小时里,我一直对迭代器感到震惊。 当我执行Iterator时,得到NoSuchElementException 代码 new Thread() { @Overrid
我尝试了许多不同的方法来修复该错误。我知道这与 hasNext 有关,我只是不确定错误在哪里。请帮忙。另外,如果有人能告诉我如何从 getLargestQuantityItem 方法将变量larges
代码在 Gitbash 命令行 (GitHub) 中正确运行。但是,当我在 NetBeans 中编译并运行它时,它给出了 NoSuchElement Exception。如果有人可以帮助我使用 Net
从队列中删除时,我有时会收到 NoSuchElementException 。我需要使用锁/等待/其他一些延迟机制吗? 我提供了代码的粗略翻译。 带队列的线程 public void run(){ w
如何删除代码中的 NoSuchElementException ?我也在应用 hasNextLine 但它也没有接受它。 public static void main (String[] a
我已经做了一些研究,但一无所获。 这是我的代码: public void play(){ System.out.print("Make your choice ( R - P - S) : "
自从我醒来以来,我一直在尝试让它工作,但我根本无法弄清楚是什么导致了这个异常。 try { scan = new Scanner(new File("dictionary.txt"))
我是一名优秀的程序员,十分优秀!