2012-06-26 2 views
1

Так что я Somthing так:File.Exists() неожиданно возвращает ложное

File testFile = new File("/opt/tester/etc/test.properties"); 
if(!testFile.exists()){ 
    System.exit(0) } 

всегда выходит, глядя на отладчике я вижу, что файл был создан с помощью свойства «путь» в «\ неавтоматического \ tester \ etc \ test.properties "и 'prefixLength' от 1

файл существует в системе, я могу выполнить команды 'ls' и 'file', и он отлично работает, после чтения о разрешениях и т. д. Я изменил свойства файла на это:

-rw-rw-rw-. 1 root root 475 Jun 18 14:11 /opt/tester/etc/test.properties 

перед:

-rw-------. 1 user1 user1 475 Jun 18 14:11 /opt/tester/etc/test.properties 

(мой Java класс работает как корень и нет символических ссылок на пути)

какие-либо идеи, почему это происходит? Спасибо.

UPDATE: только что созданный файл «тест» на том же каталоге добавляется слово внутри с «нано» и до сих пор не работает .. так что я предполагаю, что файл в порядке, и что-то еще

UPDATE 2: продолжает мои книги как нерешенные. Я думаю, что это имеет какое-то отношение к пути, который я установил с помощью /, и он хранится как \ при просмотре отладчика. Но работает нормально, когда не работает через отладчик. Таким образом, я думаю, что это вызвано моей средой (код, запущенный на Linux, удаленно отлаживаемый Mule Studio 1.0.0 (на основе eclipse 3.6.1), работающий в Windows 7).

UPDATE 3: читать что-то сказать, что, может быть, 32 бит отладчик на VM и 64 бит отладчик в клиенте может иметь что-то делать с глюками .. так что я переехал все на моей локальной машине и теперь отладки отлично.

+0

'testFile' ==' secretsFile'? – assylias

+0

'testFile' создан, затем' secretsFile.exists() '...? – hmjd

+0

Опечатка на моем посту, код не имеет опечатки. извините, ребята, – david

ответ

0

Глупо с моей стороны, я отлаживаю удаленно !! поэтому я думаю, что eclipse ищет файл в моей системе, а не на удаленной машине. (Первый раз с помощью удаленной отладки)

(это не правильный ответа, как я только что узнал, что удаленная отладка не должна вмешиваться вообще с этим)

+0

не знаю, где добавить файл в окно, чтобы я мог продолжить удаленную отладку. – david

+0

Не думаю, что это так. Если вы подключаетесь к процессу в удаленной системе, он будет искать файл в удаленной системе. – sudocode

+1

Попробуйте изменить оператор в файл, который на самом деле находится на вашем компьютере Windows, тогда вы узнаете, если это проблема. Вы не отлаживаете удаленно, а затем – Joost

0

Я подозреваю, что у вас есть ошибка, вызванная не заключает if состояние в {} брекеты. В случае отсутствия фигурных скобок, если между if и System.exit(0) существует какая-либо линия, тогда выход всегда будет вызываться (поскольку он не является частью предложения if).

+0

только один строка в исходном коде, ошибка заключалась в том, что я отлаживаю удаленно через eclipse и, по-видимому, ищет файл на моей локальной системе, в то время как отладка – david

0

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

Для записи файла на диске:

try { 
    File f = new File("path_of_file"); 
    FileWriter fw = new FileWriter(f); 
    BufferedWriter bw = new BufferedWriter(fw); 
    bw.write("Hello"); 
    bw.close(); 
    fw.close(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Этот код проверяет наличие файла в указанном месте:

File f = new File("path_of_file"); 
if(f.exists()){ 
    System.out.println("success"); 
} 
else{ 
    System.out.println("fail"); 
} 
+0

будет делать, спасибо за вашу помощь – david

+0

интересно: я получил следующее исключение на первой строке второй части вашего кода java.io.FileNotFoundException: \ testfile.txt (доступ запрещен) – david

+0

проверить путь, вы дали его правильно и, пожалуйста, еще раз дважды проверьте разрешения. –

0

Вы указали в комментарии, что он отлично работает на окнах. Это явно ошибка привилегий пользователя. Попробуйте эту команду в эмуляторе терминала

sudo chmod 777 /path_to_file 

Подробнее о команде here.

Он обходит любые ошибки привилегий пользователя.

Вновь попробуйте запустить код Kumar Vivek Mitra.

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