c# Ftp下载程序源代码解析

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.IO;

using System.Net;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace 网络操作

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void menuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

{

}

private void button1_Click_1(object sender, EventArgs e)

{

FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(textBox1.Text);//能够是ftpserver的绝对路径也能够是相对路径

//URI 能够是相对的也能够是绝对的。假设 URI 的形式为 "ftp://contoso.com/%2fpath"(%2f 是转义字符“/”),则该 URI 是绝对的,并且当前文件夹为 /path。可是,假设 URI 的形式为 "ftp://contoso.com/path",首先 .NET Framework 登录到 FTP server(使用由 Credentials 属性设置的username和password),然后将当前文件夹设置为 <UserLoginDirectory>/path。

//uri不是url所以第一个文本框中应该输入ftp://url/cftea.txt

ftpRequest.Credentials = new NetworkCredential(textBox2.Text, textBox3.Text);

//您必须拥有server的有效username和password,或者server必须同意匿名登录。能够通过设置 Credentials 属性来指定用于连接server的凭据,也能够将它们包括在传递给 Create 方法的 URI 的 UserInfo 部分中。假设 URI 中包括 UserInfo 信息,则使用指定的username和password信息将 Credentials 属性设置为新的网络凭据。

//为基于password的身份验证方案(如基本、简要、NTLM 和 Kerberos 身份验证)提供凭据。

//此类不支持基于公钥的身份验证方法,如安全套接字层 (SSL) client身份验证

//public NetworkCredential(string userName,string password)

FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

//若要訪问 FTP 特定的属性,必须将此方法返回的 WebResponse 对象强制转换为 FtpWebResponse。

//返回 FTP server响应。

//FtpWebResponse封装文件传输协议 (FTP) server对请求的响应。

Stream data = ftpResponse.GetResponseStream();  //通过响应对象获得响应流

//获取流,该流用于读取来自server的响应的体

//本程序中 检索包括从 FTP server上发送的响应数据的流

//get方法的 返回值一个 Stream,包括响应的体。

//GetResponseStream 方法从请求的 Internet 资源返回数据流。

string str = textBox1.Text.Substring(textBox1.Text.LastIndexOf("/"), textBox1.Text.Length - textBox1.Text.LastIndexOf("/"));

//函数參数1和參数2在 startIndex 处开头、长度为 length 的子字符串等效的一个字符串假设找到该字符,则为 value 的从零開始的索引位置;假设未找到,则为 -1。

//str.length当前字符串中字符的数量。

//  报告指定 Unicode 字符在此实例中的最后一个匹配项的从零開始的索引位置。(本例中为最后一个/的下标位置)

//最后提取出的字符串为textBox1.Text去除/之前的字符

string SavePath = str;

if (File.Exists(SavePath))

{

File.Delete(str);

}

byte[] buffer = new byte[4096];

FileStream stream = new FileStream(SavePath, FileMode.Create);

//使用指定的路径和创建模式初始化 FileStream 类的新实例。由 .NET Compact Framework 支持。

//摘要:

//指定操作系统应创建新文件。 假设文件已存在,它将被覆盖。 这须要 System.Security.Permissions.FileIOPermissionAccess.Write

//权限。 FileMode.Create 等效于这种请求:假设文件不存在,则使用 System.IO.FileMode.CreateNew;否则使用

//System.IO.FileMode.Truncate。 假设该文件已存在但为隐藏文件,则将引发 System.UnauthorizedAccessException异常。

int count = 0;

do

{

count = data.Read(buffer, 0, buffer.Length); //读取从ftp中获得的响应的数据流对象

//public abstract int Read(byte[] buffer,int offset,int count)第一个參数为字节第二个为偏移量第三个为读取的字符数

if (count > 0)

{

stream.Write(buffer, 0, count);//參照read

//这个是文件流对象通过从ftp中获得的数据流開始读取字符然后写入文件流来保存

}

} while (count > 0);

//读入缓冲区中的总字节数。 假设当前可用的字节数没有请求的字节数那么多,

//则总字节数可能小于请求的字节数,或者假设已到达流的末尾,则为零 (0)

ftpResponse.Close();//上一句是打算将字符串读完,这一句是FtpWebResponse对象流关闭

stream.Close();   //stream流关闭

}

}

}

时间: 2024-10-12 17:58:23

c# Ftp下载程序源代码解析的相关文章

c# Ftp下载程序源码解析

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Net; using System.Threading.Tasks; using System.Windows.Forms; n

ABAP表抛FTP通用程序

主要功能: 1.支持R3所有表(标准.自建)下传,下传方式为FTP 2.支持输出字段选择及顺序调整 3.支持动态条件,不同的表会有不同的选择条件,根据不同的条件选择需要下传的数据 4.支持单表.多表.以及输出数据再次加工(需自己写输出逻辑扩展程序,可参考YTEMPLET) 5.支持多表查询,及多表查询的动态选择条件 6.支持大数据量表分批取数.以及分批下传(已通过BSEG大数据量表测试) 7.支持单文件下传(只生产一个文件,默认是分批下传,会产生多个文件) 8.其它支持参看选择屏幕 程序创建好后

网络数据下载和JSON解析

ios之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection从网络上,下载数据,以及如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载显示. 涉及到的知识点有: 1.NSURLConnection异步下载和封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 什么是网络应用? 对于iOS开发来说的网络应用,笔者觉得需要通过访问网络,获取服务端数据来实现全

ios的网络数据下载和json解析

ios的网络数据下载和json解析 简介 在本文中,笔者将要给大家介绍如何使用nsurlconnection 从网上下载数据,以及解析json数据格式,以及如何显示数据和图片的异步下载显示. 涉及的知识点: NSYRLConnection异步下载和封装 JSON格式和JSON格式解析 数据显示和使用SDwebimage异步下载图片 内容 网络下载基础知识介绍 NSURLConnection使用 JSON格式说明和格式化工具 一个完成页面的实现(包含model和SDWebimage) 什么是网络应

android7.x Launcher3源代码解析(3)---workspace和allapps载入流程

Launcher系列目录: 一.android7.x Launcher3源代码解析(1)-启动流程 二.android7.x Launcher3源代码解析(2)-框架结构 三.android7.x Launcher3源代码解析(3)-workspace和allapps载入流程 前两篇博客分别对Lancher的启动和Launcher的框架结构进行了一些分析.这一篇.将着重開始分析界面的载入流程. 1.总体流程 先上一张总体的流程图吧.(图片看不清能够下载下来看或者右击新开个页面查看图片) wate

ios 网络数据下载和JSON解析

ios 网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载显示 涉及到得知识: 1.NSURLConnection异步下载和封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 (1)什么是网络应用? 一般情况下, iPhone的计算机, 照相机不需要从网络上下载数据也能运行, 所以这

SDWebImage源代码解析(二)

上一篇:SDWebImage源代码解析(一) 2.缓存 为了降低网络流量的消耗.我们都希望下载下来的图片缓存到本地.下次再去获取同一张图片时.能够直接从本地获取,而不再从远程server获取.这样做的还有一个优点是提升了用户体验,用户第二次查看同一幅图片时,能高速从本地获取图片直接呈现给用户. SDWebImage提供了对图片缓存的支持,而该功能是由SDImageCache类来完毕的.该类负责处理内存缓存及一个可选的磁盘缓存.当中磁盘缓存的写操作是异步的,这样就不会对UI操作造成影响. 2.1

美女图片採集器 (源代码+解析)

前言: 有一段时间没写博客了, "持之以恒"徽章都暗了, 实在不该. 前一段确实比較忙, ...小小地给自己的懒找个借口吧. 大二即将结束, 学习iOS也有一段时间了.今天抽点时间, 开源一个前几天刚上传的App里面的一个功能, RT, 美女图片採集器. ? 美女.. 相信没有人不喜欢吧, 基于此, 这个小Demo应运而生. 注:? 本文正在參加博客大赛. 假设认为对你有所帮助, 还望帮忙投下票. 多谢. ? 投票链接:?http://vote.blog.csdn.net/Articl

iOS之网络数据下载和JSON解析

iOS之网络数据下载和JSON解析 简介 在本文中笔者主要给大家介绍IOS如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载显示. 涉及到的知识点: 1.NSURLConnection 异步下载和封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 什么是网络应用? 需要通过联网进行操作的应用 网络应用的程序结构? c/s结构:即客户端/服务端 常见的