2014-02-08 3 views
0

У меня, кажется, проблема с чтением файла, и он находится в том же каталоге, что и источник. Я использую eclipse. Мне было интересно, почему он не может найти файл.Java FileReader can not find file

Не удалось прочитать файл
java.io.FileNotFoundException: Simulation.Configuration (Система не может найти указанный файл)
в java.io.FileInputStream.open (Native Method)
в java.io. FileInputStream. (Unknown Source)
на java.io.FileInputStream. (Unknown Source)
на java.io.FileReader. (Unknown Source)
на hw1.Simulator.main (Simulator.java:24)

import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.util.ArrayList; 
import java.util.Scanner; 

/** 
* Simulates the interaction between objects 
*/ 
public class Simulator { 

public static void main(String[] args) { 
    ArrayList<Geotask> geotasks = new ArrayList<Geotask>(); 
    int dimensionX = 0; 
    int dimensionY = 0; 
    int numberOfMobileObjects = 0; 
    MobileObject[] MoblieObjects = new MobileObject[numberOfMobileObjects]; 
    int durationOfSimulation = 0; 

    try { 


     Scanner in = new Scanner(new FileReader("Simulation.Configuration")); 

     while (in.hasNext()) { 
      String simulation = in.next(); 
      switch (simulation) { 
      case ("dimensionX:"): 
       dimensionX = in.nextInt(); 
       break; 
      case ("dimensionY:"): 
       dimensionY = in.nextInt(); 
       break; 
      case ("numberOfMoileObjects:"): 
       numberOfMobileObjects = in.nextInt(); 
       break; 
      case ("WarningGeotask:"): 
       Geotask wTask = new WarningGeotask(in.nextInt(), 
         in.nextInt()); 
       geotasks.add(wTask); 
       break; 
      case ("CounterGeotask:"): 
       Geotask cTask = new CounterGeotask(in.nextInt(), 
         in.nextInt()); 
       geotasks.add(cTask); 
       break; 
      case ("PopulationMonitoringGeotask:"): 
       Geotask pTask = new PopulationMonitoringGeotask(
         in.nextInt(), in.nextInt(), in.nextInt()); 
       geotasks.add(pTask); 
       break; 
      case ("durationOfsimulation:"): 
       durationOfSimulation = in.nextInt(); 

       break; 

      } 

     } 

     in.close(); 

      System.out.println("unable to close configuration file!!!"); 

     Ground ground = new Ground(dimensionX, dimensionY); 
     MobileObject mobile = null; 
     for (Geotask tsk : geotasks) { 
      ground.addGeotask(tsk); 
     } 
     for (int i = 0; i < numberOfMobileObjects; i++) { 
      mobile = new MobileObject(i, i % dimensionX, i % dimensionY, 1, 
        i % 8, ground); 
      MoblieObjects[i] = mobile; 
      for (Geotask tsk : geotasks) { 
       if (mobile.getCurrentX() == tsk.getX() 
         && mobile.getCurrentY() == tsk.getY()) { 
        tsk.moveIn(mobile); 
       } 
      } 
     } 
     for (int i = 0; i < durationOfSimulation; i++) { 
      for (MobileObject obj : MoblieObjects) { 
       obj.move(); 
       System.out.println("" + obj.getID() + " (" 
         + obj.getCurrentX() + ", " + obj.getCurrentY() 
         + ")"); 
      } 
     } 
     for (Geotask tsk : geotasks) { 
      tsk.printType(); 
     } 
    } catch (FileNotFoundException e) { 
     System.out.println("Could not read the file"); 
    }catch(NullPointerException e) 
    { 
     System.out.println("Null point exception"); 
    }catch(IllegalArgumentException e) 
    { 
     System.out.println("Illegal Argument Exception"); 
    }catch(IllegalStateException e) 
    { 
     System.out.println("Illegal State Exception"); 
    } 


} 

}

+2

Почему, по вашему мнению, файл должен быть в той же папке, что и исходный код для вашего класса? –

+0

В какой среде вы используете свою программу? Затмение? –

+0

он находится в той же папке, что и мой источник. Java – drhunn

ответ

1

Использование

new InputStreamReader(Simulator.class.getResourceAsStream("Simulation.Configuration")); 
-1

Вы можете вернуть каталог программы во время выполнения, что делает ОС независимым.

System.out.printf("%s", System.getProperty("user.dir")); 
+0

Это должен быть комментарий. –