【发布时间】:2011-03-28 09:25:41
【问题描述】:
我有一个问题不能自己解决。
我是 JAVA 的大佬。
我不知道这个问题的解决方案。但我想我知道这个问题何时发生。 所以,我已经解决了这个问题。但我想要另一个解决方案,因为我的解决方案也有另一个问题。我必须减少处理时间。
String intDir="C:\\RNE_IN";
while(true) {
File interfaceDirectory = new File(intDir);
String[] arrayfiles = interfaceDirectory.list(new FBMFileFilter());
for(String f : arrayfiles){
String filename = String.format("%1$s%2$s%3$s", intDir,File.separator,f);
File file = new File(filename);
FileInputStream stream = null;
System.out.println(file.canExecute()); // true
System.out.println(file.canRead()); // true
System.out.println(file.exists()); // true
System.out.println(file.isFile()); // true
System.out.println(file.length()); // call full bytes of file
// I can control NPE with this Thread sleep Time.
Thread.sleep(1);
// It occurs when Stream is constructed in the below.
stream = new FileInputStream(file);
FBMDeviceOnlyParser onlyparser = new FBMDeviceOnlyParser();
onlyparser.ParseDeviceNameOnly(stream);
String onlydevice = onlyparser.getDeviceName();
String onlystepseq = onlyparser.getStepSeq();
}
}
在上面的sn-p中,我认为文件没有问题。 文件状态始终为真,并且 file.length 为全字节,无论异常。 但是,在无限循环时,如果我从另一个目录复制并粘贴到 intDir ,则会发生“NullPointerException”。
当 Thread.sleep(time) 超过 1000ms 时,NPE 不会发生。 由于处理时间,我想删除“Thread.sleep()”代码。
如果程序启动前intDir中有文件,则程序没有问题(不会发生NPE)
我想检查文件或 FileInputStream 状态是否不会发生 NPE。
感谢您的关心。
【问题讨论】:
-
什么是堆栈跟踪?哪一行抛出 NPE?
-
那么,您要解决的问题是什么?非工作代码是没有用的,因为它没有告诉我们代码的用途。请用文字而不是代码来解释您的问题
-
java.lang.NullPointerException at Apeiron.MainEntry.main(MainEntry.java:179) 线程“main”中的异常 java.lang.NullPointerException at Apeiron.MainEntry.main(MainEntry.java:260)
-
一个带有 Thread.sleep 的“while(true)”循环来控制问题对我来说有点可疑。您是否知道您在该文件上打开了大量流?你想轮询文件还是你的意图是什么?
-
在“Thread.sleep(1)”和“stream = new FileInputStream(file);”之间
标签: java nullpointerexception fileinputstream