Apache Commons FTPClient, проверьте, существует ли удаленный каталог, и получите разрешения (linux - unix) - PullRequest
7 голосов
/ 21 декабря 2010

Можно ли с FTPClient (Apache commons-net) проверить, существует ли удаленный каталог?

Я хочу сделать что-то вроде этого:

ftp.isDirectory(String path) //returns true, false

А затем получить разрешения (chmod) каталога:

ftp.getPermisions(String path) //returns -rwxr-xr-x 

Ответы [ 4 ]

16 голосов
/ 01 июля 2011

Попробуйте изменить рабочий каталог на каталог, который необходимо проверить:

boolean directoryExists = FTPClient.changeWorkingDirectory("path/to/somedir")
5 голосов
/ 19 ноября 2016

То, что вам просто нужно проверить, это просто ftpClient.cwd("your Directory Name")

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

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");
}
1 голос
/ 22 марта 2011

Мне тоже нужно было это понять, но после небольшой игры, я думаю, я понял это. Я еще не успел проверить это, но думаю, что это сработает

FTPFile file[];
file = new FTPFile[ftpClient.listFiles().length];
for (int i = 0; i<file.length; i++) {
if (file[i].getName() == "directory name") {
    if (file[i].isDirectory()) {
    //Do stuff if it is a directory here
         if (file[i].hasPermission(access, permission) {
        //Do whatever you want with permissions - access and permission arguments are int's
                        }
    }
}
}

Надеюсь, это работает / помогает. Это также кажется довольно избыточным способом, так что может быть лучший способ сделать это. ИДК, я новичок в этой библиотеке и Android

0 голосов
/ 06 октября 2014

Если удаленный хост поддерживает это, самый простой метод - mlistFile () .

if (ftpClient.featureValue("MLST") != null) {
    FTPFile file = ftpClient.mlistFile(null);
    boolean b = file.hasPermission(FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION);
}
...