我使用此代码从ftp服务器读取文件:
static List<String> GetDirectory(String DirectoryName)
{
try
{
var ConnectionString = String.Format("{0}/{1}", Connection.GetFTPConfig.FTPSourceAddress, DirectoryName);
var request = (FtpWebRequest)WebRequest.Create(ConnectionString);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = new NetworkCredential(Connection.GetFTPConfig.FTPSourceUsername, Connection.GetFTPConfig.FTPSourcePassword);
var Directories = new List<String>();
var response = (FtpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
Directories.Add(line);
line = streamReader.ReadLine();
}
}
response.Close();
return Directories;
}
catch (Exception ex)
{
return new List<String>();
}
}
DirectoryName
是我文件夹的地址,我想读取此文件夹中的所有文件。
此代码始终正常,但当DirectoryName
包含"#"
时,此行
string line = streamReader.ReadLine();
返回null。
我检查了streamReader
。在ReadLine()
之前,streamReader.EndOfStream
的值为 True 。但在此之后,streamReader.EndOfStream
的值变为:
的&#39; streamReader.EndOfStream&#39;抛出类型&#39; System.ObjectDisposedException&#39;
当我更改文件夹名称时,它可以正常工作。例如,我的文件夹名称为"2014-06-18_06-58-47-529_14#42411-R"
,文件夹中的文件名为"2014-06-18_06-58-47-529_14#42411-R.jpg"
。当我将文件夹名称中的#更改为"2014-06-18_06-58-47-529_14142411-R"
时,它可以正常工作并返回文件夹中的文件列表!
问题是什么?