zoukankan      html  css  js  c++  java
  • 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 + "/";
    }
    }
    }
    }





  • 相关阅读:
    【ABAP系列】SAP ABAP OOALV 动态设置单元格可否编辑
    【HANA系列】SAP HANA使用XS和HTTP创建proxy
    【HANA系列】SAP HANA SLT在表中隐藏字段并传入HANA的方法
    【BW系列】SAP 讲讲BW/4 HANA和BW on HANA的区别
    【HANA系列】SAP HANA 2.0 SPS00 SDA(Smart Data Access)连接Hadoop
    【BW系列】SAP BW on HANA 迁移问题
    【HANA系列】SAP HANA行列转换
    【HANA系列】SAP ECLIPSE中创建ABAP项目失败原因解析
    开放-封闭原则
    单一职责原则
  • 原文地址:https://www.cnblogs.com/javahouse/p/10308242.html
Copyright © 2011-2022 走看看