在 C# 中使用 Fluent FTP 从 FTP 服务器获取最后 added/copied 个文件
Get last added/copied files from FTP Server using Fluent FTP in c#
我正在使用以下代码。 (流利FTP )
但是 Item.Modified 只会给出文件的创建日期。
所以它的呈现基于复制的文件创建日期。 (不是复制的时候)
我将如何根据 copied/Added 日期在 Fluent FTP.
中获取文件
private static void GetFiles()
{
using (FtpClient conn = new FtpClient())
{
string ftpPath = "ftp://myftp/";
Dictionary<string, string> dirList = new Dictionary<string, string>();
DateTime lastRunDate = DateTime.Now.AddMinutes(-2);
string downloadFileName = @"C:\temp\FTPTest\";
string newID = Guid.NewGuid().ToString();
downloadFileName += newID + "\";
conn.Host = ftpPath;
//conn.Credentials = new NetworkCredential("ftptest", "ftptest");
conn.Connect();
//Get all directories
foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(),
FtpListOption.Modify | FtpListOption.Recursive))
{
// if this is a file
if (item.Type == FtpFileSystemObjectType.File)
{
if (item.Modified >= lastRunDate)
{
dirList.Add(item.FullName, item.Modified.ToString());
conn.DownloadFile(downloadFileName + item.FullName, item.FullName);
}
}
}
}
}
解释:
我正在从 FTP(需要读取权限)下载具有相同文件夹结构的文件。
因此,每次作业运行时,我都可以检查是否存在相同文件(完整路径)的物理路径
如果不存在,则可以将其视为新文件。
我也可以做一些相同的操作并下载。
它只是一个替代解决方案。
代码更改:
private static void GetFiles()
{
using (FtpClient conn = new FtpClient())
{
string ftpPath = "ftp://myftp/";
string downloadFileName = @"C:\temp\FTPTest\";
downloadFileName += "\";
conn.Host = ftpPath;
//conn.Credentials = new NetworkCredential("ftptest", "ftptest");
conn.Connect();
//Get all directories
foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(),
FtpListOption.Modify | FtpListOption.Recursive))
{
// if this is a file
if (item.Type == FtpFileSystemObjectType.File)
{
string localFilePath = downloadFileName + item.FullName;
//Only newly created files will be downloaded.
if (!File.Exists(localFilePath))
{
conn.DownloadFile(localFilePath, item.FullName);
//Do any action here.
Console.WriteLine(item.FullName);
}
}
}
}
}
我正在使用以下代码。 (流利FTP ) 但是 Item.Modified 只会给出文件的创建日期。 所以它的呈现基于复制的文件创建日期。 (不是复制的时候) 我将如何根据 copied/Added 日期在 Fluent FTP.
中获取文件private static void GetFiles()
{
using (FtpClient conn = new FtpClient())
{
string ftpPath = "ftp://myftp/";
Dictionary<string, string> dirList = new Dictionary<string, string>();
DateTime lastRunDate = DateTime.Now.AddMinutes(-2);
string downloadFileName = @"C:\temp\FTPTest\";
string newID = Guid.NewGuid().ToString();
downloadFileName += newID + "\";
conn.Host = ftpPath;
//conn.Credentials = new NetworkCredential("ftptest", "ftptest");
conn.Connect();
//Get all directories
foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(),
FtpListOption.Modify | FtpListOption.Recursive))
{
// if this is a file
if (item.Type == FtpFileSystemObjectType.File)
{
if (item.Modified >= lastRunDate)
{
dirList.Add(item.FullName, item.Modified.ToString());
conn.DownloadFile(downloadFileName + item.FullName, item.FullName);
}
}
}
}
}
解释:
我正在从 FTP(需要读取权限)下载具有相同文件夹结构的文件。 因此,每次作业运行时,我都可以检查是否存在相同文件(完整路径)的物理路径 如果不存在,则可以将其视为新文件。 我也可以做一些相同的操作并下载。
它只是一个替代解决方案。
代码更改:
private static void GetFiles()
{
using (FtpClient conn = new FtpClient())
{
string ftpPath = "ftp://myftp/";
string downloadFileName = @"C:\temp\FTPTest\";
downloadFileName += "\";
conn.Host = ftpPath;
//conn.Credentials = new NetworkCredential("ftptest", "ftptest");
conn.Connect();
//Get all directories
foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(),
FtpListOption.Modify | FtpListOption.Recursive))
{
// if this is a file
if (item.Type == FtpFileSystemObjectType.File)
{
string localFilePath = downloadFileName + item.FullName;
//Only newly created files will be downloaded.
if (!File.Exists(localFilePath))
{
conn.DownloadFile(localFilePath, item.FullName);
//Do any action here.
Console.WriteLine(item.FullName);
}
}
}
}
}