StreamReader无法读取名称中带有“#”的文件

时间:2014-06-18 10:28:29

标签: c# ftp streamreader ftpwebrequest

我使用此代码从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"时,它可以正常工作并返回文件夹中的文件列表! 问题是什么?

0 个答案:

没有答案