2012-05-02 2 views
0

Довольно просто:Java File IO + относительные пути + NetBeans

File account = new File("./data/account"); 
account.createNewFile(); 

дает мне:

java.io.IOException: No such file or directory 
    at java.io.UnixFileSystem.createFileExclusively(Native Method) 
    at java.io.File.createNewFile(File.java:900) 
    ... 

Почему file.createNewFile() дать мне IOException с сообщением No such file or directory? Я говорю это, чтобы создать файл.

Выполнение этого кода за пределами NetBeans, похоже, без проблем, может ли NetBeans не обрабатывать относительные ссылки на файлы?

Заранее благодарим за любую помощь!

+1

Существует ли каталог './Data'? – Jeffrey

+0

. может ссылаться на другой каталог при работе в Netbeans, чем в командной строке. – xxpor

+0

@ Джеффри. Сейчас я немного похож на идиота, нет ./data не существует. Это было до того, как я перенес проект в netbeans, который мог бы объяснить это ... Спасибо! –

ответ

2

Если ./data не существует, этот вызов завершится с ошибкой.

File f = new File("./data/account"); 
if(!f.getParentFile().exists()) { // if the directories don't exist 
    if(!f.getParentFile().mkdirs()) { // if making the directories fails 
     // directories weren't created, throw exception or something 
    } 
} 
f.createNewFile(); 
+0

Прохладный. Благодарю. Ценить это. Будет ли это иметь какие-либо нежелательные последствия, если текущий путь уже существует? –

+0

@ B.VB. Теперь этого не произойдет. :) – Jeffrey

1

Netbeans запускает программу java из папки dist. Вам нужно будет создать папку data. Тем не менее, я считаю, что в некоторых случаях Netbeans очистит всю папку и, следовательно, удалит ее. Я бы использовал абсолютный путь.

+0

Скажем, чтобы избежать этой проблемы, я хочу создать 'account', если он еще не существует, а также создать'./Data' тоже. –

+0

Это был бы самый безопасный маршрут. – Andrew

Смежные вопросы