FTP和SFTP是不同的,但我想知道SFTP中是否存在FTP中的「SYST」命令。如果我有一個使用JSch的SFTP連接,並且我想要返回系統類型,那我該怎麼做?我正在將FTP連接轉換爲SFTP。如果沒有辦法處理SFTP,是否有解決方法?如何在SFTP中返回系統類型?
public String getSystemType()
throws IOException, FtpException
{
if(out == null)
return null;
acquire(); // Acquire the object
try {
ftpCommand("SYST"); //sends command to FTP to retrieve the system type.
if(!reply.substring(0, 3).equals("215"))
throw new FtpException(reply);
} finally {
release(); // Release the object
}
return reply.substring(4);
}
我需要這個「系統類型」從一個位置解析文件或目錄的信息結果。它可能是Windows服務器或UNIX服務器。根據我需要解析它檢索
1)名稱
* 2)權限在MSDOS格式列表
* 3)類型
* 4)所有者在MSDOS格式..not提供..not可用名單
* 5)集團在MSDOS格式列表
* 6)尺寸
* Parse a UNIX format list. With skipping number of lines.
* The columns of a typical UNIX format list is like:
* drwxr-xr-x 6 appli appli 1024 May 17 20:33 java
* -rw------- 1 appli appli 1005 May 1 21:21 mp3list
* drwxr-xr-x 5 appli appli 1024 May 17 16:56 perl
* drwxr-xr-x 6 appli appli 1024 Apr 30 23:18 public_html
// Some UNIX format list doesn't contain the column for group like this:
// -rw-r--r-- 1 daemon 0 Dec 7 10:15 .notar
// -r--r--r-- 1 daemon 828 Mar 30 1995 HOW_TO_SUBMIT
// -r--r--r-- 1 daemon 627 Mar 30 1995 README
// -r--r--r-- 1 daemon 876 Mar 30 1995 WELCOME
// drwxr-xr-x 2 ftp 512 Oct 13 1999 bin
你確實需要那個系統類型,還是隻是信息?你可以用一些假文本替換返回值,它仍然可以工作嗎?因爲代碼取決於遠程服務器的系統描述對我來說似乎有點脆弱。 – cello
@cello還有另外一個函數,它會執行一個「LIST」來返回關於文件或目錄的信息。它用於解析返回字符串,我在舊的FTP類中有一個方法,它驗證它的UNIX格式或MS-DOS格式。我不確定SFTP是否需要這樣做。我只是試圖保持這些方法,並且只將這些內部的進程轉換爲SFTP。 –
我不明白你的編輯(關於文件或目錄的解析信息)與你的問題有關。 –