2015-07-03 2 views
0

Я пытаюсь получить доступ к файлу в удаленном общем местоположении.file.exists возвращает false, когда папка не пуста

////hostname//data//upload//123//test.txt 
File sourceFile=new File("////hostname//data//upload//123//test.txt"); 
sysout("sourceFile.exists()"+sourceFile.exists())//returning false 

Если каталог пуст file.exists() возвращает true. Я использую Java 1.6

Я не понимаю, что это за странное поведение.

+0

Вы уверены, что вам нужно написать //, а не \\? –

ответ

1

Прежде всего, чтобы вернуться к предложению Эрвина, это не правильная попытка. Символ \ используется в Java как escape-последовательность, обычно для печати зарезервированных символов. К примеру будет

String s = "The weather is really "nice" today"; 

результат ошибки, так как " уже зарезервированы для строк. Правильная версия будет

String s = "The weather is really \"nice\" today"; 

Возвращаясь к вопросу, вы должны знать, что при создании файла и тест, если он существует Java будет проверять абстрактный путь файла. Тем не менее, если ваш путь абзаца является каталогом и он существует true будет возвращен.

Edit:
Если вы намерены проверить, если абстрактный путь является каталогом, попробуйте следующее:

// Check if a file is a directory 
if(file.isDirectory()) { 

} 

// Check if a file contains something 
if(file.list().length > 0) { 

} 
+0

Проблема исправлена, так как служба окон приложений не работает на правильном пользователе. Таким образом, он выбрасывает это исключение из-за отсутствия разрешений. Спасибо за помощь ребятам. – Jyo

0

Проверьте этот пример, он проверяет каталог еще создает новый, то новый файл создано.

File f = new File("D:/image_send"); 
    File file = new File("D:/image_send/" + date + ".txt"); 
    try { 
     if(!f.isDirectory()){ 
     f.mkdirs(); 
     } 
     file.createNewFile(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    System.out.println("File created Success"); 
0
public static boolean fileTransfer(String src, String des) throws Exception { 
    if (des == null || des.equals("") || src == null || src.equals("")) { 
     return false; 
    } 
    File fileExisting = new File(src); 
    File fileNew = new File(des+ fileExisting.getName()); 
    if (fileExisting.exists() && !fileExisting.isDirectory()) { 
     if (fileExisting.renameTo(fileNew)) { 
      System.out.println("File is moved successful!"); 
     } else { 
      System.out.println("File is failed to move!"); 
     } 

    } 
    return fileNew.exists(); 
} 

Это код для передачи файлов на Ваш комментарий, использование в качестве ЦСИ SourcePath и дез как путь назначения, если вы получите логическое значение ложь, это означает, что путь данный неправильно.