2017-02-05 23 views
0

Я новичок в протоколе SFTP. Мне нужно перечислить все файлы и папки с сервера, используя протокол SFTP. Я реализовал это с использованием библиотеки JSch:Как я могу перечислить все файлы с SFTP-сервера с помощью Java?

public ArrayList<JSONObject> listFiles(String deviceName, String location) throws Exception 
{ 

    this.sftpLogin(); 

    Vector fileListVector; 
    if (Strings.isNullOrEmpty(location)) 
    { 
     fileListVector = channelSftp.ls("/"); 
    } else 
    { 
     fileListVector = channelSftp.ls("/"+location); 
    } 

    ArrayList<JSONObject> fileList = new ArrayList<>(); 

    for (Object aFileListVector : fileListVector) 
    { 
     ChannelSftp.LsEntry entry = (ChannelSftp.LsEntry) aFileListVector; 
     if (entry.getFilename().equalsIgnoreCase(".") || entry.getFilename().equalsIgnoreCase("..")) 
     { 
      continue; 
     } 
     SftpATTRS attrs = entry.getAttrs(); 

     fileList.add(ImportProtocolUtils.getFileJSONObject(attrs.isDir(), location, entry.getFilename())); 
    } 

    return fileList; 
} 

Я пробовал канал 'shell' и 'exec', используя этот протокол. Но команда 'ls' не работает.

Какая из лучших библиотек для этого в Java?

Заранее спасибо.

ответ

1

Вы должны записаться в подкаталоги.

Что-то вроде:

if (attrs.isDir()) 
{ 
    fileList.addAll(listFiles(deviceName, location + "/" + entry.getFilename()); 
} 

Смотрите также Display remote directory/all files in Jtree.