• C#自定义FTP访问类的代码


    如下资料是关于C#自定义FTP访问类的代码,应该对各朋友有帮助。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Net;
    using System.Text.RegularExpressions;

    namespace DotNet.Utilities
    {
    public class FTPHelper
    {
    #region 字段
    string ftpURI;
    string ftpUserID;
    string ftpServerIP;
    string ftpPassword;
    string ftpRemotePath;
    #endregion

    public FTPHelper(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)
    {
    ftpServerIP = FtpServerIP;
    ftpRemotePath = FtpRemotePath;
    ftpUserID = FtpUserID;
    ftpPassword = FtpPassword;
    }

    public void Upload(string filename)
    {
    FileInfo fileInf = new FileInfo(filename);
    FtpWebRequest reqFTP;
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileInf.Name));
    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
    reqFTP.KeepAlive = false;
    reqFTP.UseBinary = true;
    reqFTP.ContentLength = fileInf.Length;
    int buffLength = 2048;
    byte[] buff = new byte[buffLength];
    int contentLen;
    FileStream fs = fileInf.OpenRead();
    try
    {
    Stream strm = reqFTP.GetRequestStream();
    contentLen = fs.Read(buff, 0, buffLength);
    while (contentLen != 0)
    {
    strm.Write(buff, 0, contentLen);
    contentLen = fs.Read(buff, 0, buffLength);
    }
    strm.Close();
    fs.Close();
    }
    catch (Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }

    public void Download(string filePath, string fileName)
    {
    try
    {
    FileStream outputStream = new FileStream(filePath + "" + fileName, FileMode.Create);
    FtpWebRequest reqFTP;
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
    reqFTP.UseBinary = true;
    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
    Stream ftpStream = response.GetResponseStream();
    long cl = response.ContentLength;
    int bufferSize = 2048;
    int readCount;
    byte[] buffer = new byte[bufferSize];
    readCount = ftpStream.Read(buffer, 0, bufferSize);
    while (readCount > 0)
    {
    outputStream.Write(buffer, 0, readCount);
    readCount = ftpStream.Read(buffer, 0, bufferSize);
    }
    ftpStream.Close();
    outputStream.Close();
    response.Close();
    }
    catch (Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }

    public void Delete(string fileName)
    {
    try
    {
    FtpWebRequest reqFTP;
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
    reqFTP.KeepAlive = false;
    string result = String.Empty;
    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
    long size = response.ContentLength;
    Stream datastream = response.GetResponseStream();
    StreamReader sr = new StreamReader(datastream);
    result = sr.ReadToEnd();
    sr.Close();
    datastream.Close();
    response.Close();
    }
    catch (Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }

    public string[] GetFilesDetailList()
    {
    try
    {
    StringBuilder result = new StringBuilder();
    FtpWebRequest ftp;
    ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
    ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    WebResponse response = ftp.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream());
    string line = reader.ReadLine();
    line = reader.ReadLine();
    line = reader.ReadLine();
    while (line != null)
    {
    result.Append(line);
    result.Append("n");
    line = reader.ReadLine();
    }
    result.Remove(result.ToString().LastIndexOf("n"), 1);
    reader.Close();
    response.Close();
    return result.ToString().Split('n');
    }
    catch (Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }

    private string[] GetAllList(string url)
    {
    List<string> list = new List<string>();
    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(new Uri(url));
    req.Credentials = new NetworkCredential(ftpPassword, ftpPassword);
    req.Method = WebRequestMethods.Ftp.ListDirectory;
    req.UseBinary = true;
    req.UsePassive = true;
    try
    {
    using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())
    {
    using (StreamReader sr = new StreamReader(res.GetResponseStream()))
    {
    string s;
    while ((s = sr.ReadLine()) != null)
    {
    list.Add(s);
    }
    }
    }
    }
    catch (Exception ex)
    {
    throw (ex);
    }
    return list.ToArray();
    }

    public string[] GetFileList(string url)
    {
    StringBuilder result = new StringBuilder();
    FtpWebRequest reqFTP;
    try
    {
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
    reqFTP.UseBinary = true;
    reqFTP.Credentials = new NetworkCredential(ftpPassword, ftpPassword);
    reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    WebResponse response = reqFTP.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream());
    string line = reader.ReadLine();
    while (line != null)
    {

    if (line.IndexOf("<DIR>") == -1)
    {
    result.Append(Regex.Match(line, @"[S]+ [S]+", RegexOptions.IgnoreCase).Value.Split(' ')[1]);
    result.Append("n");
    }
    line = reader.ReadLine();
    }
    result.Remove(result.ToString().LastIndexOf('n'), 1);
    reader.Close();
    response.Close();
    }
    catch (Exception ex)
    {
    throw (ex);
    }
    return result.ToString().Split('n');
    }

    public bool FileExist(string RemoteFileName)
    {
    foreach (string str in fileList)
    {
    if (str.Trim() == RemoteFileName.Trim())
    {
    return true;
    }
    }
    return false;
    }

    public void MakeDir(string dirName)
    {
    FtpWebRequest reqFTP;
    try
    {
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));
    reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
    reqFTP.UseBinary = true;
    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
    Stream ftpStream = response.GetResponseStream();
    ftpStream.Close();
    response.Close();
    }
    catch (Exception ex)
    { }
    }

    public long GetFileSize(string filename)
    {
    FtpWebRequest reqFTP;
    long fileSize = 0;
    try
    {
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));
    reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;
    reqFTP.UseBinary = true;
    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
    Stream ftpStream = response.GetResponseStream();
    fileSize = response.ContentLength;
    ftpStream.Close();
    response.Close();
    }
    catch (Exception ex)
    { }
    return fileSize;
    }

    public void ReName(string currentFilename, string newFilename)
    {
    FtpWebRequest reqFTP;
    try
    {
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));
    reqFTP.Method = WebRequestMethods.Ftp.Rename;
    reqFTP.RenameTo = newFilename;
    reqFTP.UseBinary = true;
    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
    Stream ftpStream = response.GetResponseStream();
    ftpStream.Close();
    response.Close();
    }
    catch (Exception ex)
    { }
    }

    public void MovieFile(string currentFilename, string newDirectory)
    {
    ReName(currentFilename, newDirectory);
    }

    public void GotoDirectory(string DirectoryName, bool IsRoot)
    {
    if (IsRoot)
    {
    ftpRemotePath = DirectoryName;
    }
    else
    {
    ftpRemotePath += DirectoryName + "/";
    }
    }
    }
    }





  • 相关阅读:
    TypeScript入门
    github个人博客绑定单独阿里域名指南
    搜索引擎命令大全!
    Linux入门基础篇
    CSS之BFC、IFC、FFC and GFC
    陀螺仪属性介绍和实战
    web语义化,从松散到实战
    前端跨域深入理解
    快速安装自己的Sublime系列
    hint.css使用说明
  • 原文地址:https://www.cnblogs.com/javahouse/p/10308242.html
Copyright © 2020-2023  润新知