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对象,此对象之前的一篇文章有提到,主要是记录目录 、权限等信息;

  1. public SFTPv3FileAttributes stat(String path) throws IOException  
  2. {  
  3.     return statBoth(path, Packet.SSH_FXP_STAT);  
  4. }  


public SFTPv3FileAttributes lstat(String path) throws IOException

--》检索文件的文件属性。这种方法不遵循服务器上的符号链接

  1. public SFTPv3FileAttributes lstat(String path) throws IOException  
  2. {  
  3.     return statBoth(path, Packet.SSH_FXP_LSTAT);  
  4. }  

public Vector ls(String dirName) throws IOException

--》列出一个目录的内容

这个在删除非空目录的时候有演示,其跟linux环境ls展示信息一样,不可以递归展示。

  1. public Vector ls(String dirName) throws IOException  
  2.     {  
  3.         byte[] handle = openDirectory(dirName);  
  4.         Vector result = scanDirectory(handle);  
  5.         closeHandle(handle);  
  6.         return result;  
  7.     }  

public void mkdir(String dirName, int posixPermissions) throws IOException

--》创建一个新的目录

    第一个参数是目录路径,第二个是权限码:如0600 代表rw  具体参考linux权限知识。

  1. public void mkdir(String dirName, int posixPermissions) throws IOException  
  2.     {  
  3.         int req_id = generateNextRequestID();  
  4.   
  5.         TypesWriter tw = new TypesWriter();  
  6.         tw.writeString(dirName, charsetName);  
  7.         tw.writeUINT32(AttribFlags.SSH_FILEXFER_ATTR_PERMISSIONS);  
  8.         tw.writeUINT32(posixPermissions);  
  9.   
  10.         sendMessage(Packet.SSH_FXP_MKDIR, req_id, tw.getBytes());  
  11.   
  12.         expectStatusOKMessage(req_id);  
  13.     }  

public void rm(String fileName) throws IOException
--》删除一个文件

      之前有演示;

  1. public void rm(String fileName) throws IOException  
  2. {  
  3.     int req_id = generateNextRequestID();  
  4.   
  5.     TypesWriter tw = new TypesWriter();  
  6.     tw.writeString(fileName, charsetName);  
  7.   
  8.     sendMessage(Packet.SSH_FXP_REMOVE, req_id, tw.getBytes());  
  9.   
  10.     expectStatusOKMessage(req_id);  
  11. }  

public void rmdir(String dirName) throws IOException

--》删除一个空目录

      之前有演示,也实现了一个如何删除非空目录 ;

  1. public void rmdir(String dirName) throws IOException  
  2.     {  
  3.         int req_id = generateNextRequestID();  
  4.   
  5.         TypesWriter tw = new TypesWriter();  
  6.         tw.writeString(dirName, charsetName);  
  7.   
  8.         sendMessage(Packet.SSH_FXP_RMDIR, req_id, tw.getBytes());  
  9.   
  10.         expectStatusOKMessage(req_id);  
  11.     }  


public void mv(String oldPath, String newPath) throws IOException

--》移动一个文件或者目录

  1. public void mv(String oldPath, String newPath) throws IOException  
  2.     {  
  3.         int req_id = generateNextRequestID();  
  4.   
  5.         TypesWriter tw = new TypesWriter();  
  6.         tw.writeString(oldPath, charsetName);  
  7.         tw.writeString(newPath, charsetName);  
  8.   
  9.         sendMessage(Packet.SSH_FXP_RENAME, req_id, tw.getBytes());  
  10.   
  11.         expectStatusOKMessage(req_id);  
  12.     }  

public SFTPv3FileHandle openFileRO(String fileName) throws IOException

--》打开一个文件 读取内容;

  1. public SFTPv3FileHandle openFileRO(String fileName) throws IOException  
  2. {  
  3.     return openFile(fileName, 0x00000001null); // SSH_FXF_READ      
  4. }  

我们继续看看:SFTPv3FileHandle
  1. public class SFTPv3FileHandle  
  2. {  
  3.     final SFTPv3Client client;  
  4.     final byte[] fileHandle;  
  5.     boolean isClosed = false;  
  6.   
  7.     /* The constructor is NOT public */  
  8.   
  9.     SFTPv3FileHandle(SFTPv3Client client, byte[] h)  
  10.     {  
  11.         this.client = client;  
  12.         this.fileHandle = h;  
  13.     }  
  14.   
  15.     /** 
  16.      * Get the SFTPv3Client instance which created this handle.  
  17.      *  
  18.      * @return A SFTPv3Client instance. 
  19.      */  
  20.     public SFTPv3Client getClient()  
  21.     {  
  22.         return client;  
  23.     }  
  24.   
  25.     /** 
  26.      * Check if this handle was closed with the {@link SFTPv3Client#closeFile(SFTPv3FileHandle)} method 
  27.      * of the <code>SFTPv3Client</code> instance which created the handle. 
  28.      *  
  29.      * @return if the handle is closed. 
  30.      */  
  31.     public boolean isClosed()  
  32.     {  
  33.         return isClosed;  
  34.     }  

其读取的内容是以二进制表示的byte[];


public SFTPv3FileHandle openFileRW(String fileName) throws IOException

--》打开文件进行读写操作;

  1. public SFTPv3FileHandle openFileRW(String fileName) throws IOException  
  2. {  
  3.     return openFile(fileName, 0x00000003null); // SSH_FXF_READ | SSH_FXF_WRITE  
  4. }  

public SFTPv3FileHandle createFile(String fileName) throws IOException

--》创建一个文件 进行读写操作

  1. public SFTPv3FileHandle createFile(String fileName) throws IOException  
  2. {  
  3.     return createFile(fileName, null);  
  4. }  

public SFTPv3FileHandle createFile(String fileName, SFTPv3FileAttributes attr) throws IOException

--》创建一个文件 打开它并进行读写操作

SFTPv3FileAttributes  权限等设置对象;

  1. public SFTPv3FileHandle createFile(String fileName, SFTPv3FileAttributes attr) throws IOException  
  2. {  
  3.     return openFile(fileName, 0x00000008 | 0x00000003, attr); // SSH_FXF_CREAT | SSH_FXF_READ | SSH_FXF_WRITE  
  4. }  

public SFTPv3FileHandle createFileTruncate(String fileName) throws IOException

--》创建一个文件如果它已经存在了即截断打开它并进行读写操作

  1. public SFTPv3FileHandle createFileTruncate(String fileName) throws IOException  
  2. {  
  3.     return createFileTruncate(fileName, null);  
  4. }  

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参数:


  1. Connection conn = null;  
  2.   
  3.     try {  
  4.         conn = getOpenedConnection(host, username, password, port);  
  5.   
  6.         SFTPv3Client sftpClient = new SFTPv3Client(conn);  
最后需要关闭session连接:
  1. sftpClient.close();  
  1.  <pre code_snippet_id="218414" snippet_file_name="blog_20140305_15_594380" name="code" class="java">conn .close();  
  2.   
  3. 其余方法大家可以自己看看;  
  4. </pre><br>  
  5. <pre></pre> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值