java sftpv3client_Ganymed SSH-2 for Java系列8之SFTPv3Client说明
Ganymed SSH-2 for Java系列8之SFTPv3Client說明:
SFTPv3Client是SSH for java的一個SFTP(協議版本 3),?客戶端通過SSH-2連接的一個簡單的同步實現java類。
其基本的對外方法有如下:
public SFTPv3FileAttributes stat(String path) throws IOException;
--》檢索文件的文件屬性。
返回SFTPv3FileAttributes對象,此對象之前的一篇文章有提到,主要是記錄目錄 、權限等信息;
public SFTPv3FileAttributes stat(String path) throws IOException
{
return statBoth(path, Packet.SSH_FXP_STAT);
}
public SFTPv3FileAttributes lstat(String path) throws IOException
--》檢索文件的文件屬性。這種方法不遵循服務器上的符號鏈接。
public SFTPv3FileAttributes lstat(String path) throws IOException
{
return statBoth(path, Packet.SSH_FXP_LSTAT);
}
public Vector ls(String dirName) throws IOException
--》列出一個目錄的內容。
這個在刪除非空目錄的時候有演示,其跟linux環境ls展示信息一樣,不可以遞歸展示。
public Vector ls(String dirName) throws IOException
{
byte[] handle = openDirectory(dirName);
Vector result = scanDirectory(handle);
closeHandle(handle);
return result;
}
public void mkdir(String dirName, int posixPermissions) throws IOException
--》創建一個新的目錄
第一個參數是目錄路徑,第二個是權限碼:如0600 代表rw ?具體參考linux權限知識。
public void mkdir(String dirName, int posixPermissions) throws IOException
{
int req_id = generateNextRequestID();
TypesWriter tw = new TypesWriter();
tw.writeString(dirName, charsetName);
tw.writeUINT32(AttribFlags.SSH_FILEXFER_ATTR_PERMISSIONS);
tw.writeUINT32(posixPermissions);
sendMessage(Packet.SSH_FXP_MKDIR, req_id, tw.getBytes());
expectStatusOKMessage(req_id);
}
public void rm(String fileName) throws IOException
--》刪除一個文件
之前有演示;
public void rm(String fileName) throws IOException
{
int req_id = generateNextRequestID();
TypesWriter tw = new TypesWriter();
tw.writeString(fileName, charsetName);
sendMessage(Packet.SSH_FXP_REMOVE, req_id, tw.getBytes());
expectStatusOKMessage(req_id);
}
public void rmdir(String dirName) throws IOException
--》刪除一個空目錄
之前有演示,也實現了一個如何刪除非空目錄 ;
public void rmdir(String dirName) throws IOException
{
int req_id = generateNextRequestID();
TypesWriter tw = new TypesWriter();
tw.writeString(dirName, charsetName);
sendMessage(Packet.SSH_FXP_RMDIR, req_id, tw.getBytes());
expectStatusOKMessage(req_id);
}
public void mv(String oldPath, String newPath) throws IOException
--》移動一個文件或者目錄
public void mv(String oldPath, String newPath) throws IOException
{
int req_id = generateNextRequestID();
TypesWriter tw = new TypesWriter();
tw.writeString(oldPath, charsetName);
tw.writeString(newPath, charsetName);
sendMessage(Packet.SSH_FXP_RENAME, req_id, tw.getBytes());
expectStatusOKMessage(req_id);
}
public SFTPv3FileHandle openFileRO(String fileName) throws IOException
--》打開一個文件 讀取內容;
public SFTPv3FileHandle openFileRO(String fileName) throws IOException
{
return openFile(fileName, 0x00000001, null); // SSH_FXF_READ
}
我們繼續看看:SFTPv3FileHandle
public class SFTPv3FileHandle
{
final SFTPv3Client client;
final byte[] fileHandle;
boolean isClosed = false;
/* The constructor is NOT public */
SFTPv3FileHandle(SFTPv3Client client, byte[] h)
{
this.client = client;
this.fileHandle = h;
}
/**
* Get the SFTPv3Client instance which created this handle.
*
* @return A SFTPv3Client instance.
*/
public SFTPv3Client getClient()
{
return client;
}
/**
* Check if this handle was closed with the {@link SFTPv3Client#closeFile(SFTPv3FileHandle)} method
* of the SFTPv3Client instance which created the handle.
*
* @return if the handle is closed.
*/
public boolean isClosed()
{
return isClosed;
}
其讀取的內容是以二進制表示的byte[];
public SFTPv3FileHandle openFileRW(String fileName) throws IOException
--》打開文件進行讀寫操作;
public SFTPv3FileHandle openFileRW(String fileName) throws IOException
{
return openFile(fileName, 0x00000003, null); // SSH_FXF_READ | SSH_FXF_WRITE
}
public SFTPv3FileHandle createFile(String fileName) throws IOException
--》創建一個文件 進行讀寫操作
public SFTPv3FileHandle createFile(String fileName) throws IOException
{
return createFile(fileName, null);
}
public SFTPv3FileHandle createFile(String fileName, SFTPv3FileAttributes attr) throws IOException
--》創建一個文件 打開它并進行讀寫操作
SFTPv3FileAttributes ?權限等設置對象;
public SFTPv3FileHandle createFile(String fileName, SFTPv3FileAttributes attr) throws IOException
{
return openFile(fileName, 0x00000008 | 0x00000003, attr); // SSH_FXF_CREAT | SSH_FXF_READ | SSH_FXF_WRITE
}
public SFTPv3FileHandle createFileTruncate(String fileName) throws IOException
--》創建一個文件(如果它已經存在了即截斷),打開它并進行讀寫操作
public SFTPv3FileHandle createFileTruncate(String fileName) throws IOException
{
return createFileTruncate(fileName, null);
}
public SFTPv3FileHandle createFileTruncate(String fileName, SFTPv3FileAttributes attr) throws IOException
--》創建一個文件(如果它已經存在了即截斷),打開它并進行讀追加寫操作;
public SFTPv3FileHandle createFileTruncate(String fileName, SFTPv3FileAttributes attr) throws IOException
{
return openFile(fileName, 0x00000018 | 0x00000003, attr); // SSH_FXF_CREAT | SSH_FXF_TRUNC | SSH_FXF_READ | SSH_FXF_WRITE
}
使用:
傳入conn參數:
Connection conn = null;
try {
conn = getOpenedConnection(host, username, password, port);
SFTPv3Client sftpClient = new SFTPv3Client(conn);最后需要關閉session連接:
sftpClient.close();
conn .close();
其余方法大家可以自己看看;
總結
以上是生活随笔為你收集整理的java sftpv3client_Ganymed SSH-2 for Java系列8之SFTPv3Client说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java类怎么实例化_Java类的定义及
- 下一篇: python中property方法有用_