小编Cap*_*ous的帖子

C#BinaryReader"流不支持搜索操作"

我试图使用C#和ftpwebrequest从ftp服务器下载文件.我可以使用BinaryReader获取字节,但是当我尝试使用br.ReadBytes(int)读取流时,我得到一个BinaryReader不支持搜索操作的错误.

有谁知道如何最好地读取字节,以便我可以将它们写入文件?

这是完整的方法:

    public void DownloadFile(String fileName)
    {
        Logger.Info("starting to download file: " + fileName);

        try
        {
            var downloadFileRequest = (FtpWebRequest)WebRequest.Create(FtpServer + "//" + fileName);
            downloadFileRequest.Credentials = new NetworkCredential(FtpUsername,FtpPassword);
            downloadFileRequest.Method = WebRequestMethods.Ftp.DownloadFile;
            downloadFileRequest.UseBinary = true;

            ServicePoint sp = downloadFileRequest.ServicePoint;
            sp.ConnectionLimit = 2;

            Logger.Info("getting ftp response for download file for " + fileName);

            try
            {
                var downloadResponse = (FtpWebResponse)downloadFileRequest.GetResponse();

                Logger.Info("getting ftp response stream for " + fileName);

                try
                {
                    Stream downloadStream = downloadResponse.GetResponseStream();

                    Logger.Info("File Download status: {0}", downloadResponse.StatusDescription.Trim());

                    Logger.Info("getting binary reader …
Run Code Online (Sandbox Code Playgroud)

c# ftpwebrequest binaryreader

3
推荐指数
1
解决办法
1万
查看次数

C#Path.GetTempPath返回"找不到路径的一部分"错误

我从ftp服务器下载文件并将其保存到Path.GetTempPath()中定义的目录; 但是,我收到以下错误:无法找到路径的一部分.

我已经确认返回的路径是正确的:C:\ Users\[username]\AppData\Local\Temp.

SYSTEM,Administrators和[username]都可以完全控制该目录.我认为临时目录的意思是它可以保存给任何人/每个人保存,但为了以防万一,我也给了NETWORK SERVICE修改权限.(我假设这是ASP.NET Dev服务器使用的用户名,但我不确定.)

我在Vista上使用VS 08.

这是我的代码:

FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(
    ConfigurationManager.AppSettings["FTPServer"] + "//" + fileName);

downloadRequest.Credentials = new NetworkCredential(
    ConfigurationManager.AppSettings["FTPUsername"],
    ConfigurationManager.AppSettings["FTPPassword"]);

downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile;

FtpWebResponse downloadResponse = 
    (FtpWebResponse)downloadRequest.GetResponse();

try
{
    Stream downloadStream = downloadResponse.GetResponseStream();

    if (downloadStream != null) 
    {
        logger.Info("File Download status: {0}", 
            downloadResponse.StatusDescription);

        StreamReader downloadReader = new StreamReader(downloadStream);

        try
        {
            if (downloadReader != null)
            {

                StreamWriter downloadWriter = 
                    new StreamWriter(Path.GetTempPath());
                downloadWriter.AutoFlush = true;
                downloadWriter.Write(downloadReader.ReadToEnd());
            }
        }
        finally
        {
            if (downloadReader != null)
            {
                downloadReader.Close();
            } …
Run Code Online (Sandbox Code Playgroud)

c#

2
推荐指数
1
解决办法
5958
查看次数

标签 统计

c# ×2

binaryreader ×1

ftpwebrequest ×1