我正在创建一个服务来监视FTP位置以获取新更新,并且需要能够使用WebRequestMethods.Ftp.ListDirectoryDetails方法解析从FtpWebRequest响应返回的响应.如果所有响应都遵循相同的格式,但不同的FTP服务器软件提供不同的响应格式,这将是相当容易的.
例如,可能会返回:
08-10-11 12:02PM <DIR> Version2
06-25-09 02:41PM 144700153 image34.gif
06-25-09 02:51PM 144700153 updates.txt
11-04-10 02:45PM 144700214 digger.tif
Run Code Online (Sandbox Code Playgroud)
另一台服务器可能会返回:
d--x--x--x 2 ftp ftp 4096 Mar 07 2002 bin
-rw-r--r-- 1 ftp ftp 659450 Jun 15 05:07 TEST.TXT
-rw-r--r-- 1 ftp ftp 101786380 Sep 08 2008 TEST03-05.TXT
drwxrwxr-x 2 ftp ftp 4096 May 06 12:24 dropoff
Run Code Online (Sandbox Code Playgroud)
并且还观察到其他差异,因此可能存在一些我尚未遇到的细微差别.
有没有人知道完全托管(不需要访问Windows上的外部DLL)C#类无缝地处理这些情况?
我只需要列出具有以下详细信息的目录内容:文件/目录名称,上次更新或创建的时间戳,文件/目录名称.
提前感谢任何建议,加文
我正在使用System.Net.FtpWebRequest该类,我的代码如下:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://example.com/folder");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("username", "password");
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string names = reader.ReadToEnd();
reader.Close();
response.Close();
Run Code Online (Sandbox Code Playgroud)
这是基于MSDN上提供的示例,但我找不到更详细的内容.
我将所有文件名存储在文件夹中names但是我现在如何遍历每个文件名并检索它们的日期?我想检索日期,以便找到最新的文件.谢谢.
这是我的代码
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(FTPAddress);
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
List<string> directories = new List<string>();
string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
directories.Add(line);
line = streamReader.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我正在使用ListDirectoryDetails.
对于每一行directories,这是内容:
ftp://172.28.4.7//12-22-14 01:21PM 9075 fileName.xml
Run Code Online (Sandbox Code Playgroud)
我的问题是如何从这条线上获得时间?我应该解析字符串吗?我不这么认为,因为我读到LastModified有财产,但我不知道如何使用它.
请问你能帮帮我吗?
我正在开发一个PowerShell脚本,它将从FTP站点提取文件.文件每小时上传到FTP站点,所以我需要下载最新的文件.我目前的代码下载了今天的所有文件而不是一个文件.如何使其仅下载最新文件?
这是我目前使用的代码
$ftpPath = 'ftp://***.***.*.*'
$ftpUser = '******'
$ftpPass = '******'
$localPath = 'C:\Temp'
$Date = get-date -Format "ddMMyyyy"
$Files = 'File1', 'File2'
function Get-FtpDir ($url, $credentials)
{
$request = [Net.FtpWebRequest]::Create($url)
if ($credentials) { $request.Credentials = $credentials }
$request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
(New-Object IO.StreamReader $request.GetResponse().GetResponseStream()) -split "`r`n"
}
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($ftpUser,$ftpPass)
$webclient.BaseAddress = $ftpPath
Foreach ( $item in $Files )
{
Get-FTPDir $ftpPath $webclient.Credentials |
? { $_ -Like $item+$Date+'*' } |
% {
$webClient.DownloadFile($_, (Join-Path …Run Code Online (Sandbox Code Playgroud) 我有一个带有一些文件的FTP服务器.我在本地目录(in C:\)中有相同的文件.
当我运行该程序时,我希望它搜索FTP服务器中的所有文件,这些文件的最后修改时间戳晚于本地目录中的同一文件(同名),并下载所有已创建的文件.
请问有人能给我一个帮助或提示吗?我会感激所有答案!
I have to write a script which accesses an FTP server, and then deletes all *.zip files which are older than X days.
As clarification: The script can't run on the FTP server.
This is what I have so far:
$ftpServer = "RandomFTPServer"
$ftpUser = "Username"
$ftpPassword = Read-Host "Password" -AsSecureString
$credentials = New-ObjectSystem.Net.NetworkCredential($ftpUser, $ftpPassword)
function Get-FtpRequest($ftpPath) {
$ftpRequest = [System.Net.FtpWebRequest]::Create("$ftpServer/$ftpPath")
$ftpRequest.Credentials = $credentials
$ftpRequest.UseBinary = $true
$ftpRequest.KeepAlive = $true
$ftpRequest.UsePassive = $true
return $ftpRequest
}
Run Code Online (Sandbox Code Playgroud)
Any tips on what …