📄 ftplibrary.cs
字号:
using System;
using NetLib = KCommon.Net.FTP;
namespace SourceFtp.FileSystem
{
/// <summary>
/// Summary description for FtpLibrary.
/// </summary>
public class FtpLibrary : ILibrary
{
private NetLib.Session m_Session;
private NetLib.ControlChannel m_ControlChannel;
private string m_ServerName;
private string m_User;
private string m_Password;
private int m_Port;
public FtpLibrary(string p_ServerName, string p_User, string p_Password, int p_Port)
{
m_Password = p_Password;
m_ServerName = p_ServerName;
m_Port = p_Port;
m_User = p_User;
}
#region ILibrary Members
public void Open()
{
m_Session = new NetLib.Session();
m_Session.Server = m_ServerName;
m_Session.Port = m_Port;
m_Session.Connect(m_User,m_Password);
m_ControlChannel = m_Session.ControlChannel;
}
public void Close()
{
m_Session.Close();
m_ControlChannel = null;
m_Session = null;
}
public Directory Root
{
get
{
return new Directory(this,m_Session.RootDirectory);
}
}
public FileCollection GetFileList(Directory p_Dir)
{
NetLib.FtpDirectory l_Dir = (NetLib.FtpDirectory)p_Dir.InternalTag;
m_Session.CurrentDirectory = l_Dir;
NetLib.VbEnumableCollection l_Collection = l_Dir.Files;
FileCollection l_Files = new FileCollection(this,p_Dir);
foreach (NetLib.FtpFile f in l_Collection)
{
l_Files.ListAdd(new File(this,f));
}
return l_Files;
}
public DirectoryCollection GetSubDirectoryList(Directory p_Dir)
{
NetLib.FtpDirectory l_Dir = (NetLib.FtpDirectory)p_Dir.InternalTag;
m_Session.CurrentDirectory = l_Dir;
NetLib.VbEnumableCollection l_Collection = l_Dir.SubDirectories;
DirectoryCollection l_SourceDirs = new DirectoryCollection(this,p_Dir);
foreach (NetLib.FtpDirectory f in l_Collection)
{
l_SourceDirs.ListAdd(new Directory(this,f));
}
return l_SourceDirs;
}
public string GetFileFullPath(File p_Directory)
{
NetLib.FtpFile l_File = (NetLib.FtpFile)p_Directory.InternalTag;
return l_File.FullPath;
}
public string GetFileName(File p_Directory)
{
NetLib.FtpFile l_File = (NetLib.FtpFile)p_Directory.InternalTag;
return l_File.Name;
}
public string GetFileDateModified(File p_Directory)
{
NetLib.FtpFile l_File = (NetLib.FtpFile)p_Directory.InternalTag;
return l_File.DateModified;
}
public long GetFileSize(File p_Directory)
{
NetLib.FtpFile l_File = (NetLib.FtpFile)p_Directory.InternalTag;
return l_File.Size;
}
public string GetFilePermission(File p_Directory)
{
NetLib.FtpFile l_File = (NetLib.FtpFile)p_Directory.InternalTag;
return l_File.Permission;
}
public string GetDirectoryName(Directory p_Directory)
{
NetLib.FtpDirectory l_File = (NetLib.FtpDirectory)p_Directory.InternalTag;
return l_File.Name;
}
public string GetDirectoryFullPath(Directory p_Directory)
{
NetLib.FtpDirectory l_File = (NetLib.FtpDirectory)p_Directory.InternalTag;
return l_File.FullName;
}
public Directory AddSubDirectory(Directory p_Parent, string p_DirectoryName)
{
NetLib.FtpDirectory l_Directory = (NetLib.FtpDirectory)p_Parent.InternalTag;
m_Session.CurrentDirectory = l_Directory;
l_Directory.Refresh();
return new Directory(this, l_Directory.AddSubdir(p_DirectoryName));
}
public void RemoveSubDirectory(Directory p_DirectoryToRemove)
{
NetLib.FtpDirectory l_Directory = (NetLib.FtpDirectory)p_DirectoryToRemove.InternalTag;
NetLib.FtpDirectory l_ParentDir = l_Directory.Parent;
m_Session.CurrentDirectory = l_ParentDir;
l_ParentDir.Refresh();
l_ParentDir.RemoveSubdir(l_Directory.Name);
}
public void RemoveFile(File p_File)
{
NetLib.FtpFile l_File = (NetLib.FtpFile)p_File.InternalTag;
NetLib.FtpDirectory l_ParentDir = l_File.Parent;
m_Session.CurrentDirectory = l_ParentDir;
l_ParentDir.Refresh();
l_ParentDir.RemoveFile(l_File.Name);
}
public void RenameDirectory(Directory p_Directory, string p_NewName)
{
NetLib.FtpDirectory l_Directory = (NetLib.FtpDirectory)p_Directory.InternalTag;
NetLib.FtpDirectory l_ParentDir = l_Directory.Parent;
m_Session.CurrentDirectory = l_ParentDir;
l_ParentDir.Refresh();
l_ParentDir.RenameSubitem(l_Directory,p_NewName);
}
public void RenameFile(File p_File, string p_NewName)
{
NetLib.FtpFile l_File = (NetLib.FtpFile)p_File.InternalTag;
NetLib.FtpDirectory l_ParentDir = l_File.Parent;
m_Session.CurrentDirectory = l_ParentDir;
l_ParentDir.Refresh();
l_ParentDir.RenameSubitem(l_File,p_NewName);
}
public void DownloadFile(File p_FileToDownload, string p_LocalDestinationPath)
{
NetLib.FtpFile l_File = (NetLib.FtpFile)p_FileToDownload.InternalTag;
NetLib.FtpDirectory l_ParentDir = l_File.Parent;
m_Session.CurrentDirectory = l_ParentDir;
l_ParentDir.Refresh();
l_ParentDir.GetFile(p_LocalDestinationPath, l_File.Name);
}
public void UploadFile(string p_LocalFileToUpload, Directory p_RemoteDestination)
{
NetLib.FtpDirectory l_Directory = (NetLib.FtpDirectory)p_RemoteDestination.InternalTag;
m_Session.CurrentDirectory = l_Directory;
l_Directory.Refresh();
l_Directory.PutFile(p_LocalFileToUpload);
}
public Directory GetDirectory(string p_Path)
{
p_Path = p_Path.Trim();
p_Path = p_Path.Replace("\\","/");
p_Path = p_Path.Replace("//","/");
if (p_Path == "/")
{
return Root;
}
else
{
NetLib.FtpDirectory l_Dir = m_Session.RootDirectory;
string[] l_SubDirs = p_Path.Split('/');
for (int i = 0; i < l_SubDirs.Length; i++)
{
if (l_SubDirs[i].Length>0)
{
m_Session.CurrentDirectory = l_Dir;
l_Dir = l_Dir.FindSubdirectory(l_SubDirs[i]);
if (l_Dir == null)
throw new ApplicationException("Invalid remote path " + p_Path);
}
}
return new Directory(this,l_Dir);
}
}
#endregion
public override string ToString()
{
if (m_Session!=null)
return "Ftp:" + m_ControlChannel.Server;
else
return base.ToString();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -