2010-02-22 18 views
10

Tôi cố gắng để đọc một tập tin và các lỗi tôi nhận được làFileNotFoundException khi tập tin tồn tại với tất cả các quyền

java.io.FileNotFoundException: /homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations/gameTheoryAgentConfiguration.properties (No such file or directory) 
     at java.io.FileInputStream.open(Native Method) 
     at java.io.FileInputStream.<init>(FileInputStream.java:106) 
     at game.player.gametheoryagent.GameTheoryAgent.<init>(GameTheoryAgent.java:67) 
     at simulation.Simulator.createPlayer(Simulator.java:141) 
     at simulation.Simulator.main(Simulator.java:64) 

tuy nhiên các tập tin không tồn tại và chỉ để kiểm tra tăng gấp đôi tôi đã cho nó 777 điều khoản, như hình dưới đây:

tui% cd /homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations 
tui% ls -al 
total 4 
drwxrwxrwx 3 at1106 cs4 1024 2010-02-22 17:45 . 
drwxrwxrwx 4 at1106 cs4 1024 2010-02-22 17:27 .. 
-rwxrwxrwx 1 at1106 cs4 260 2010-02-22 17:31 gameTheoryAgentConfiguration.properties 
drwxrwxrwx 6 at1106 cs4 1024 2010-02-22 17:41 .svn 

Bất kỳ ý tưởng nào về lý do tôi nhận ngoại lệ FNF?

Cảm ơn

đang

java mà làm cho các cuộc gọi:

File file = new File(pathToConfiguration) 
    Properties configuration = new Properties(); 
    try{ 
     configuration.load(new FileInputStream(file)); 
     int RAISE_RATIO = Integer.parseInt(configuration.getProperty("raise_ratio")); 
    } 
    catch(IOException event){ 
     System.err.println("Error in reading configuration file " + pathToConfiguration); 
     event.printStackTrace();  
    } 

Các tập tin thuộc tính đọc:

raise_ratio=4 

này đã được thử nghiệm trong các cửa sổ (với một pathToConfiguration diff (được thông qua vào các nhà xây dựng)) và hoạt động tốt.

gia tăng trong kiểm tra sau đây trong khối Catch

 if(file.exists()){ 
      System.out.println("file exists"); 
     } 
     else{ 
      System.out.println("file doesn't exist"); 
     } 

     System.out.println(file.getAbsolutePath()); 
     if(file.canRead()){ 
      System.out.println("can read"); 
     } 
     if(file.canWrite()){ 
      System.out.println("can write"); 
     } 

đầu ra như sau:

file doesn't exist 
/homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations/gameTheoryAgentConfiguration.properties 
+1

Bạn có thể dán mã Java thực tế không? – Martin

+0

Bạn đang chạy mã nào khi ngoại lệ được ném? Điều gì xảy ra nếu bạn sử dụng file.exists()? file.getAbsolutePath()? file.canRead/Write/Execute()? – Pops

+0

Bạn có đang chạy mã java trên cùng một máy nơi tệp tồn tại không? –

Trả lời

19

Theo stacktrace ban đầu có vẻ như là hai khoảng trống giữa tên tập tin và lý trí:

FileNotFoundException: ...Configuration.properties (No such file or directory) 
--------------------------------------------------^^ 

này sẽ chỉ ra cho tôi rằng tên tập tin có thể có một không gian dấu.Bạn có thể kiểm tra lại biến pathToConfiguration của mình bằng cách:

System.out.println("[" + pathToConfiguration + "]"); 

Để kiểm tra lại xem đường dẫn đó có đúng như bạn nghĩ không?

+0

Hãy cho tôi biết nếu đó chỉ là lỗi đánh máy, nếu vậy tôi sẽ xóa câu trả lời này. – beny23

+0

@beny: Ngay cả khi điều này hóa ra là sai đối với trường hợp cụ thể này, ý tưởng tuyệt vời. – Pops

+2

@beny - mắt đại bàng ở đó ... – Thimmayya

0

Khi bạn thực hiện chương trình java của bạn là bạn đang chạy nó như là cùng 'người dùng như khi bạn chạy kiểm tra dòng lệnh?

EDIT: Thử sao chép tệp vào thư mục nơi bạn chạy chương trình của mình và xem nó có thể đọc được hay không. Bạn cũng có thể thử những điều sau đây sau khi sao chép các tập tin vào thư mục thi công của bạn:

InputStream in = getClass().getResourceAsStream("/gameTheoryAgentConfiguration.properties"); 
configuration.load(in); 

(giả sử bạn có trong classpath của bạn "")

+0

vâng, với tư cách là người dùng tại1106 – Aly

+0

Aly, bạn có thể xác nhận rằng System.getProperty ("user.name") có sản lượng tại1106 không? –

0

Tôi cho rằng bạn hai lần kiểm tra tên đường dẫn nhiều hơn một lần, và như bạn nói rằng bạn đang chạy ứng dụng trên cùng một máy nơi mã nằm.

Có thể là có một số gắn kết máy chủ tệp NFS/tệp tối nghĩa chỉ hợp lệ cho vỏ đăng nhập chứ không phải cho các ứng dụng?

Thử sao chép tệp trong $ HOME của bạn và xem nó có hoạt động hay không.

+0

Tôi đã sao chép tệp vào $ HOME – Aly

+0

và ...? Nó có hoạt động không? – lorenzog

0

gì được outputted nếu bạn viết này:

System.out.println(new File(".").getAbsolutePath());

thư mục hiện tại của bạn là gì?

+0

điều này: /homes/at1106/fourthYearComputing/Induvidual-Project/svn-workspace/trunk/Induvidual_Project /. – Aly

+0

Tệp của bạn có tồn tại trong thư mục đó không? – Geo

+0

không, nhưng khi tôi tạo tệp tôi làm như vậy với đường dẫn tuyệt đối – Aly

Các vấn đề liên quan