FTP文件操作之下载文件

前面写了采用ftp上传文件,有了上传怎么能够没有下载呢?如果只有上传没有下载,那上传了也没啥用了。所以今天就跟大家一起学习学习使用ftp下载文件。

知道了怎么上传,那么下载也就变得很简单了,上传是把文件放到服务器,而下载是把文件从服务器取过来。一个是从本地读文件,然后写到服务器;另一个是从服务器读文件,然后写到本地。基本原理就是这样,下面我们看看具体的代码:

 

/// <summary>
        /// FTP下载文件
        /// </summary>
        /// <param name="userId">ftp用户名</param>
        /// <param name="pwd">ftp密码</param>
        /// <param name="ftpPath">ftp文件路径</param>
        /// <param name="filePath">下载保存路径</param>
        /// <param name="fileName">ftp文件名</param>
        /// <returns></returns>
        public string  Download(string userId, string pwd, string ftpPath, string filePath, string fileName)
        {
            string sRet = "下载成功!";
            FtpWebRequest reqFTP;
            try
            {
                FileStream outputStream = new FileStream(filePath + fileName, FileMode.Create);

                // 根据uri创建FtpWebRequest对象
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath + fileName));

                // 指定执行什么命令
                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;

                // 指定数据传输类型
                reqFTP.UseBinary = true;
                reqFTP.UsePassive = false;

                // ftp用户名和密码
                reqFTP.Credentials = new NetworkCredential(userId, pwd);

                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                // 把下载的文件写入流
                Stream ftpStream = response.GetResponseStream();

                long cl = response.ContentLength;

                // 缓冲大小设置为2kb
                int bufferSize = 2048;
                int readCount;
                byte[] buffer = new byte[bufferSize];

                // 每次读文件流的2kb
                readCount = ftpStream.Read(buffer, 0, bufferSize);
                while (readCount > 0)
                {
                    // 把内容从文件流写入
                    outputStream.Write(buffer, 0, readCount);
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
                }

                //关闭两个流和ftp连接
                ftpStream.Close();
                outputStream.Close();
                response.Close();

            }
            catch (Exception ex)
            {
                sRet=ex.Message;
            }

            //返回下载结果(是否下载成功)
            return sRet;
        }

 

 

以上代码可以实现一个简单的ftp下载的功能,只要在需要的地方调用此方法即可。代码很简单,功能很实用。

还有很多FTP的相关操作,以后会陆续跟大家分享,敬请期待!

时间: 2024-11-08 15:38:17

FTP文件操作之下载文件的相关文章

Java中向ftp上传、下载文件

最近的一个项目跟ftp打交道很多,经常需要向ftp上传.下载文件,现在总结一下公共方法. 上传 /** * 文件上传 * * @param ip * host * @param port * 端口 * @param userName * 用户名 * @param passWord * 密码 * @param localpath * 上传文件在本地磁盘路径 * @param fileName * 文件名 * @param remotePath * 文件要上传到ftp服务器的路径 * @throws

一起talk C栗子吧( 第一百四十回:C语言实例--文件操作:基于文件描述符三)

各位看官们,大家好,上一回中咱们说的是基于文件描述符进行文件操作的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中详细地介绍了文件操作相关的系统调用.不过,没有举具体的例子.我们的主要内容就是举例子,因此,今天我们将通过具体的例子来说明如果使用系统调用来操作文件. 对文件的操作,还是使用我总结的文件操作三步曲比较好: fd = open(file_name,flags_read); //打开文件 fd = open(file_name,fl

文件操作之打开文件

一.打开文件 obj = open('文件路径','打开文件方式') 打开文件方式有: r:只读方式 r+:相当于rw w:写入方式 w+:仍然等于w,无意义 a:追加方式 a+:仍然等于a,无意义 open()是Python的内建函数,提供了初始化输入/输出(I/O)的操作通用接口,成功打开一个文件后返回一个对象,否则发生IOError异常,file()是一个工厂函数,与open方法一样,可以互换,但是一般推荐用open(),因为open()是Python内建函数.file后期会被合并掉其他函

一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)

各位看官们,大家好,上一回中咱们说的是基于文件指针进行文件操作的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中详细地介绍了标准库中与文件操作相关的函数.不过,限于时间的原因,没有举具体的例子.还是那句老话,只说不练,不是我们的风格.因此,今天我们将通过具体的例子来说明如何使用文件指针来操作文件. 对文件的操作,还是使用我总结的文件操作三步曲比较好: p_file = fopen(file_name,"w"); //打开文件 re

java文件操作之移动文件到指定的目录

原文:java文件操作之移动文件到指定的目录 代码下载地址:http://www.zuidaima.com/share/1550463261166592.htm java文件操作之移动文件到指定的目录,通过renameTo方法实现,而非copy后delete package com.zuidaima.util.file; import java.io.File; /** * 移动文件到指定的目录 * * @author www.zuidaima.com * */ public class Mov

文件操作1创建文件

1.[[email protected] ]# vi list     #如果testfile不存在,则vi会自动创建一个名为testfile的文件,并在Vi打开该文件等待用户输入内容. 2.[[email protected] ]# ls -l >listfile #利用重定向,将ls -l 的执行结果输出到新文件listfile中,也可使用cat,more,less或其它命令结合重向运算符>来生成新文件 3.[[email protected] ]# cp file  file2   #复

sharepoint 2007 “文件为网络下载文件,请存储到硬盘之后再修改文件。”

当直接打开sharepoint 2007 上的excel文档后,使用使用ctrl+s保存的时候,就弹出对话框"文件为网络下载文件,请存储到硬盘之后再修改文件." 检查发现是sharepoint上安装了第三方加密工具trustview导致的. 解决办法:1.点击保存按钮保存 2.使用"迁出"后,打开文档 3.在excel中关闭trustview插件: excel options--add-ins--mamage下面选择com add-ins--然后点Go--取消选择:

PHP 文件操作类(创建文件并写入) 生成日志

<?php /** * 文件操作(生成日志)支持多条插入 * (如果插入多条语句并换行 用','逗号分开) * */ class log { public $path = './info.txt'; //默认值文件 public $mode = 'a'; //默认追加写 public $content = '默认值:空'; //默认内容是 空 public function addlog($path = null, $mode = null, $content = null) { //判断写入的

关于file文件操作的头文件 【LINUX】 (转载)

转自:http://blog.csdn.net/figo77ll/article/details/3156052 Linux下如果要对文件进行读取访问,需要包含至少以下两个头文件: #inlcude <unistd.h> #inlcude <fcntl.h> 其中fcntl.h包含了create和open命令,unistd包含了其他的诸如read, write, close等命令.很奇怪为什么不把fcntl的功能直接放到unistd里面呢.. 如果要对STDIN,STDOUT进行“