2014-11-06 56 views
1

我正在使用下面的代碼顯示所有文件和目錄。但我只想顯示目錄。請告訴我如何做到這一點。如何在Java中顯示來自SFTP服務器的唯一目錄列表

Properties props=new Properties(); 
    props.put("StrictHostKeyChecking","no"); 
    JSch jsch=new JSch(); 
    session=jsch.getSession(username, host); 
    session.setConfig(props); 
    session.setPassword(password); 
    session.connect(); 
    ch=(ChannelSftp)session.openChannel("sftp"); 
    ch.connect(); 
it takes sftp connection  
    try 
    { 
     ch.cd(filepath); 
    } 

//改變當前目錄

catch(Exception e) 
    { 
     System.out.println("filepath does not exists"); 

    } 
    Vector<ChannelSftp.LsEntry> list = ch.ls(filepath); 
    for(int i=0; i<list.size();i++){ 
     System.out.println(list.get(i).toString()); // display all files and directories 
    } 

System.out.println("file is"+flagfile); 

} 

catch(Exception e) 
{ 
    System.out.println(e); 
} 
finally 
{ 

回答

1

你可以通過「ls」的方法返回的每個條目使用的數據統計的方法在for循環,這將返回「SftpATTRS對象'有一個叫'isDir()'的方法。這將有助於過濾掉所有非目錄文件。

發現'ls'方法也返回屬性。所以不需要調用'stat'方法。 以下修改後的代碼片段將僅打印目錄。

Vector<ChannelSftp.LsEntry> list = ch.ls(filepath); 
for(int i=0; i<list.size();i++){ 
    if (list.get(i).getAttrs().isDir()) { 
     System.out.println(list.get(i).toString()); // display only directories 
    } 
} 
+0

可以顯示示例代碼 – 2014-11-06 10:42:01

相關問題