2015-07-26 3 views
0

Я пытаюсь проверить, существует ли удаленный каталог на FTP-сервере, указав путь, но мой код не смог проверить, когда я предоставляю правильное имя каталога. Я хочу проверить, является ли удаленный каталог действительным и не является файлом. Вот мой код:Как проверить, существует ли удаленный каталог на FTP-сервере?

public static boolean checkDirectoryExists(String file) throws  IOException { 
     FTPFile[] files = myClient.listDirectories(); 
return Arrays.asList(files).contains(file); 
} 
+0

Пожалуйста, посетите [помощь] и прочитать о написании хороших вопросов. Какой FTP-клиент вы используете? Каково значение аргумента 'file' для' checkDirectoryExists'? Какое сообщение об ошибке, исключение или неожиданное поведение вы видите? Как вы знаете, что каталог существует на сервере? Какую отладку вы сделали до сих пор? –

+0

Ну, я вижу, это был мой первый пост. В основном я отправляю имя этому методу и хочу проверить, является ли он одним из каталогов (а не файлов) – ssark

ответ

0

Просто используйте петлю, чтобы проверить каждый. Используйте endsWith() для проверки относительного пути к каталогу.

public static boolean checkDirectoryExists(String file) throws IOException { 
    FTPFile[] files = myClient.listDirectories(); 
    for (FTPFile file : files) { 
     if(file.getName().endsWith(file)) return true; 
    } 
    returns false; 
} 
0

Моя Хитрость заключается в том, чтобы использовать listDirectories (каталог).

  • Если каталог существует, но пуст: возвращает массив длины = 0
  • Если каталог не существует: возвращает массив длины = 0 тоже !!!

Поэтому я использую listDirectories (каталог + "/ ..")

  • Если каталог существует: возвращающие массив с наименьшим из одного элемента = каталог
  • Если каталог не не существует : возвращает массив длины = 0.

Так просто сделать:

  • FTPFile [] Tf = listDirectories (каталог + "/ ..")
  • существует = тс! = NULL & & tf.length> 0
0

Что вам просто нужно проверить только ftpClient.cwd ("ваше имя каталога")

это вернет вас целые значения

250 - если файл существует

ИЛИ

550 - Если файл не существует

Для примера,

if(ftpClient.cwd(uploadDirectoryPath)==550){ 
    System.out.println("Directory Doesn't Exists"); 
}else if(ftpClient.cwd(uploadDirectoryPath)==250){ 
    System.out.println("Directory Exists"); 
}else{ 
    System.out.println("Unknown Status"); 
} 

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

  • Нет связанных вопросов^_^