以下のコードを使用しています。(FluentFTP)が、Item.Modifiedはファイルの作成日のみを提供します。したがって、コピーされたファイルの作成日に基づいてレンダリングされます。(コピー時ではありません)FluentFTPでコピー/追加された日付に基づいてファイルを取得するにはどうすればよいですか。
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);
}
}
}
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加