JAVA NullpointerException FileInputStream (Файловый файл) - PullRequest
0 голосов
/ 28 марта 2011

У меня есть проблема, которую я не могу решить самостоятельно.
Я большой любитель 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();
      }
    }               

В приведенном выше фрагменте, я думаю, файл не имеет проблем.Состояние файла всегда истинно, а file.length - полный байт независимо от исключения.Но при бесконечном цикле, если я копирую и вставляю из другого каталога в intDir, возникает «NullPointerException».

Когда Thread.sleep (время) превышает 1000 мс, NPE не возникает.Я хочу удалить код "Thread.sleep ()" из-за времени процесса.

Если в intDir есть файлы, предшествующие запуску программы, у программы нет проблем (не возникает NPE)

Я хочу проверить состояние файла или FileInputStream, чтобы не возникало NPE.

Спасибо за беспокойство.

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Ваш вопрос трудно понять, но я могу вам сказать, что невозможно получить:

java.lang.NullPointerException at Apeiron.MainEntry.main(MainEntry.java:179) Exception in thread "main" 
java.lang.NullPointerException at Apeiron.MainEntry.main(MainEntry.java:260)

, если строка 179 - это строка:

stream = new FileInputStream(file);

Одно из следующих должно быть:

  • вы дали нам неполную трассировку стека, или
  • вы сообщили нам неправильное местоположение исключения,или
  • вы вообще не выполняете этот код;например, вы не перестроили код должным образом после его изменения.
0 голосов
/ 28 марта 2011

Как насчет этого:

String intDir="C:\\RNE_IN";  
File interfaceDirectory = new File(intDir);
while(true) {
  for(File file : interfaceDirectory.listFiles(new FBMFileFilter())) {
    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 

    final FileInputStream stream = new FileInputStream(file);
    try {
      FBMDeviceOnlyParser onlyparser = new FBMDeviceOnlyParser(); 
      onlyparser.ParseDeviceNameOnly(stream);    
      String onlydevice = onlyparser.getDeviceName();
      String onlystepseq = onlyparser.getStepSeq();
    } finally {
      stream.close();
    }
  }
}

Я сделал пару вещей - 1. избавился от ненужной генерации имени файла 2. наконец попытался освободить ресурсы дескриптора файла

Кстати, я думаю, что ваш сон позволил запускать финализаторы.

0 голосов
/ 28 марта 2011

У вас, вероятно, рано или поздно заканчиваются дескрипторы файлов.Закройте FileInputstream, когда закончите с ним.

Кроме того, объясните, что вы действительно хотите делать со своим кодом (вместо того, чтобы довести загрузку ЦП до вершины).

...