zoukankan      html  css  js  c++  java
  • [转]利用FtpClient类实现文件的上传下载功能

    该代码源自互联网,并经过修改:

    解决了中文文件名会出现乱码的情况;

    改善了上传不稳定的问题(但没有从根本上解决,目前只知道在接收Socket时有时会收到一半就退出,结果造成接收数据不完整,经常出现在Dir时。尚未仔细研究。)

    FtpClient.cs

        /// <summary>
        
    /// FtpClient 的摘要说明。
        
    /// </summary>

        public class FtpClient : IDisposable
        
    {
            
    私有变量

            
    // 构造方法
            构造方法

            
    // 属性
            BlockSize 接收和发送数据的缓冲区大小

            
    ServerAddress Ftp 服务器地址

            
    ServerPort Ftp 服务器端口

            
    RemotePath 当前服务器目录

            
    LoginUser 登录用户账号

            
    LoginPassword 用户登录密码

            
    Connected 是否登录

            
    // 接口
            IDisposable 成员

            
    // 私有方法
            ReadReply

            
    CreateDataSocket 建立进行数据连接的socket

            
    CloseSocketConnect 关闭socket连接(用于登录以前)

            
    ReadLine 读取Socket返回的所有字符串

            
    SendCommand 发送命令并获取应答码和最后一行应答字符串

            
    // 公共方法
            Connect 建立连接

            
    EnsureConnected 确保已经连接到服务器

            
    Close 关闭连接

            
    TransferType 获取或设置传输模式

            
    Dir 获得文件列表

            
    GetFileSize 获取文件大小

            
    Delete 删除

            
    Rename 重命名文件(如果新文件名与已有文件重名,将覆盖已有文件)

            
    Download 下载文件

            
    Upload 上传文件

            
    MakeDirectory 创建目录

            
    RenameDirectory 删除目录

            
    ChangeDirectory 改变当前目录
        }

    FtpClientException.cs

        /// <summary>
        
    /// FtpClientException 的摘要说明。
        
    /// </summary>

        [Serializable]
        
    public class FtpClientException : Exception
        
    {
            
    构造方法
        }

    }
    FtpReply.cs
        /// <summary>
        
    /// FtpReply 的摘要说明。
        
    /// </summary>

        [Serializable]
        
    public class FtpReply
        
    {
            
    private int _code;
            
    private string _message;

            
    public FtpReply() : this(0string.Empty)
            
    {
            }


            
    public FtpReply(int code, string message)
            
    {
                
    this._code = code;
                
    this._message = message;
            }


            
    public int Code
            
    {
                
    get
                
    {
                    
    return this._code;
                }

                
    set
                
    {
                    
    this._code = value;
                }

            }


            
    public string Message
            
    {
                
    get
                
    {
                    
    return this._message;
                }

                
    set
                
    {
                    
    this._message = value;
                }

            }

        }

    FtpTransferType.cs
        /// <summary>
        
    /// 传输模式。
        
    /// </summary>

        public enum FtpTransferType
        
    {
            
    /// <summary>
            
    /// 二进制模式。
            
    /// </summary>

            Binary,
            
    /// <summary>
            
    /// ASCII 模式。
            
    /// </summary>

            ASCII
        }
    ;
  • 相关阅读:
    python-文件操作
    python之-字符编码
    课程总结
    IO流文件输出流的应用
    字符串的基本操作
    数据结构字符串实训报告
    窗口的切换
    事件处理
    Java异常处理
    二维数组实现转置
  • 原文地址:https://www.cnblogs.com/JimZhang/p/1526477.html
Copyright © 2011-2022 走看看