2011-12-25 3 views
8

У меня есть довольно глупый вопрос, но я не смог найти решение для этого:Java путь к файлу в Linux

Когда я пытаюсь прочитать файл я получаю «файл не найден» ошибка это время выполнения. Однако он скомпилировал файл.

Я на Linux, поэтому я использую заявление что-то вроде:

Scanner s = new Scanner(new File("home/me/java/ex.txt")); 

, и это дает мне во время выполнения rror:

/home/me/javaException in thread "main" java.io.FileNotFoundException: home/me/java/ex.txt (No such file or directory) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(FileInputStream.java:137) 
at java.util.Scanner.<init>(Scanner.java:653) 
at test.main(test.java:14) 

Я попытался изменить все возможные вещи вдоль линий имена файлов, но ничего не работает.

Любые подсказки относительно того, почему это происходит? где java ищет файлы по умолчанию?

+1

говорится, что ваше местоположение файла не найдено. Я предполагаю, что ваш путь «/home/me/java/ex.txt» в Linux-системе. –

+0

Какова ценность ['user.home'] (http://pscode.org/prop/all.html?prop=user.home&format=TSV) в этой системе? –

ответ

14

Похоже, что вам не хватает ведущей косой черты. Может быть, попробовать:

Scanner s = new Scanner(new File("/home/me/java/ex.txt")); 

(о том, где он ищет файлы по умолчанию, где виртуальная машина запускается из относительных путей, как тот, который вы имеете в вашем вопросе)

+1

Спасибо Тодд. Это была ведущая косая черта. Это решило проблему! Дурак я! – AJW

10

Я думаю, что Тодд правильно , но я думаю, есть еще одна вещь, которую вы должны рассмотреть. Вы можете надежно получить домашний каталог из JVM во время выполнения, а затем вы можете создавать объекты файлов относительно этого местоположения. Это не такая уж большая проблема, и что-то, что вам понравится, если вы когда-нибудь перейдете на другой компьютер или операционную систему.

File homedir = new File(System.getProperty("user.home")); 
File fileToRead = new File(homedir, "java/ex.txt"); 
+3

Если вы портируете на * любую * другую операционную систему, я предлагаю изменить путь '/ /' в пути для 'System.getProperty (« file.separator »)' или поочередно конструировать путь по частям с помощью этого конструктора. В противном случае, +1 –

+0

Спасибо за этот отличный совет. Я буду реализовывать это сразу. – AJW

+3

Если вы нацеливаете на unix, linux, OS X или Windows, то работает косая черта. Да, даже Windows. – Bill

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