zoukankan
html css js c++ java
C# ftp
C# ftp
using
System;
using
System.Configuration;
using
System.Collections.Generic;
using
System.Text;
using
System.Net;
using
System.IO;
namespace
Wind.Riskfile.Report
{
class
FtpProc
{
string
ftpServerIP;
string
ftpUserID;
string
ftpPassword;
FtpWebRequest reqFTP;
private
void
Connect(String path)
//
连接ftp
{
//
根据uri创建FtpWebRequest对象
reqFTP
=
(FtpWebRequest)FtpWebRequest.Create(
new
Uri(path));
//
指定数据传输类型
reqFTP.UseBinary
=
true
;
//
ftp用户名和密码
reqFTP.Credentials
=
new
NetworkCredential(ftpUserID, ftpPassword);
}
public
FtpProc()
{
this
.ftpServerIP
=
ConfigurationManager.AppSettings[
"
ReportFTPUrl
"
];
this
.ftpUserID
=
ConfigurationManager.AppSettings[
"
ReportUserName
"
];
this
.ftpPassword
=
ConfigurationManager.AppSettings[
"
ReportPassWord
"
];
}
public
FtpProc(
string
ftpServerIP,
string
ftpUserID,
string
ftpPassword)
{
this
.ftpServerIP
=
ftpServerIP;
this
.ftpUserID
=
ftpUserID;
this
.ftpPassword
=
ftpPassword;
}
//
获取文件列表
private
string
[] GetFileList(
string
path,
string
WRMethods)
//
上面的代码示例了如何从ftp服务器上获得文件列表
{
string
[] downloadFiles;
StringBuilder result
=
new
StringBuilder();
try
{
Connect(path);
reqFTP.Method
=
WRMethods;
WebResponse response
=
reqFTP.GetResponse();
StreamReader reader
=
new
StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);
//
中文文件名
string
line
=
reader.ReadLine();
while
(line
!=
null
)
{
result.Append(line);
result.Append(
"
"
);
line
=
reader.ReadLine();
}
//
to remove the trailing ' '
result.Remove(result.ToString().LastIndexOf(
'
'
),
1
);
reader.Close();
response.Close();
return
result.ToString().Split(
'
'
);
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
downloadFiles
=
null
;
return
downloadFiles;
}
}
public
string
[] GetFileList(
string
path)
//
上面的代码示例了如何从ftp服务器上获得文件列表
{
return
GetFileList( ftpServerIP
+
"
/
"
+
path, WebRequestMethods.Ftp.ListDirectory);
}
public
string
[] GetFileList()
//
上面的代码示例了如何从ftp服务器上获得文件列表
{
return
GetFileList( ftpServerIP
+
"
/
"
, WebRequestMethods.Ftp.ListDirectory);
}
public
void
Upload(
string
filename)
//
上面的代码实现了从ftp服务器上载文件的功能
{
FileInfo fileInf
=
new
FileInfo(filename);
string
uri
=
ftpServerIP
+
"
/
"
+
fileInf.Name;
Connect(uri);
//
连接
//
默认为true,连接不会被关闭
//
在一个命令之后被执行
reqFTP.KeepAlive
=
false
;
//
指定执行什么命令
reqFTP.Method
=
WebRequestMethods.Ftp.UploadFile;
//
上传文件时通知服务器文件的大小
reqFTP.ContentLength
=
fileInf.Length;
//
缓冲大小设置为kb
int
buffLength
=
2048
;
byte
[] buff
=
new
byte
[buffLength];
int
contentLen;
//
打开一个文件流(System.IO.FileStream) 去读上传的文件
FileStream fs
=
fileInf.OpenRead();
try
{
//
把上传的文件写入流
Stream strm
=
reqFTP.GetRequestStream();
//
每次读文件流的kb
contentLen
=
fs.Read(buff,
0
, buffLength);
//
流内容没有结束
while
(contentLen
!=
0
)
{
//
把内容从file stream 写入upload stream
strm.Write(buff,
0
, contentLen);
contentLen
=
fs.Read(buff,
0
, buffLength);
}
//
关闭两个流
strm.Close();
fs.Close();
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message,
"
Upload Error
"
);
}
}
public
bool
Download(
string
filePath,
string
fileName,
out
string
errorinfo)
/**/
/**/
/**/
///
/上面的代码实现了从ftp服务器下载文件的功能
{
try
{
String onlyFileName
=
Path.GetFileName(fileName);
string
newFileName
=
filePath
+
"
\\
"
+
onlyFileName;
if
(File.Exists(newFileName))
{
errorinfo
=
string
.Format(
"
本地文件{0}已存在,无法下载
"
, newFileName);
return
false
;
}
string
url
=
ftpServerIP
+
"
/
"
+
fileName;
Connect(url);
//
连接
reqFTP.Credentials
=
new
NetworkCredential(ftpUserID, ftpPassword);
FtpWebResponse response
=
(FtpWebResponse)reqFTP.GetResponse();
Stream ftpStream
=
response.GetResponseStream();
long
cl
=
response.ContentLength;
int
bufferSize
=
2048
;
int
readCount;
byte
[] buffer
=
new
byte
[bufferSize];
readCount
=
ftpStream.Read(buffer,
0
, bufferSize);
FileStream outputStream
=
new
FileStream(newFileName, FileMode.Create);
while
(readCount
>
0
)
{
outputStream.Write(buffer,
0
, readCount);
readCount
=
ftpStream.Read(buffer,
0
, bufferSize);
}
ftpStream.Close();
outputStream.Close();
response.Close();
errorinfo
=
""
;
return
true
;
}
catch
(Exception ex)
{
errorinfo
=
string
.Format(
"
因{0},无法下载
"
, ex.Message);
return
false
;
}
}
/**/
///
<summary>
///
删除文件
///
</summary>
///
<param name="ftpUri"></param>
///
<returns></returns>
public
bool
DeleteFile(
string
ftpUri)
{
Uri serverUri
=
new
Uri(ftpUri);
if
(serverUri.Scheme
!=
Uri.UriSchemeFtp)
{
return
false
;
}
//
Get the object used to communicate with the server.
FtpWebRequest request
=
(FtpWebRequest)WebRequest.Create(serverUri);
request.Method
=
WebRequestMethods.Ftp.DeleteFile;
FtpWebResponse response
=
(FtpWebResponse)request.GetResponse();
Console.WriteLine(
"
Delete status: {0}
"
, response.StatusDescription);
response.Close();
return
true
;
}
//
删除文件
public
void
DeleteFileName(
string
fileName)
{
try
{
FileInfo fileInf
=
new
FileInfo(fileName);
string
uri
=
ftpServerIP
+
"
/
"
+
fileInf.Name;
Connect(uri);
//
连接
//
默认为true,连接不会被关闭
//
在一个命令之后被执行
reqFTP.KeepAlive
=
false
;
//
指定执行什么命令
reqFTP.Method
=
WebRequestMethods.Ftp.DeleteFile;
FtpWebResponse response
=
(FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message,
"
删除错误
"
);
}
}
//
创建目录
public
void
MakeDir(
string
dirName)
{
try
{
string
uri
=
ftpServerIP
+
"
/
"
+
dirName;
Connect(uri);
//
连接
reqFTP.Method
=
WebRequestMethods.Ftp.MakeDirectory;
FtpWebResponse response
=
(FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
//
删除目录
public
void
delDir(
string
dirName)
{
try
{
string
uri
=
ftpServerIP
+
"
/
"
+
dirName;
Connect(uri);
//
连接
reqFTP.Method
=
WebRequestMethods.Ftp.RemoveDirectory;
FtpWebResponse response
=
(FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
//
获得文件大小
public
long
GetFileSize(
string
filename)
{
long
fileSize
=
0
;
try
{
string
uri
=
ftpServerIP
+
"
/
"
+
filename;
Connect(uri);
//
连接
reqFTP.Method
=
WebRequestMethods.Ftp.GetFileSize;
FtpWebResponse response
=
(FtpWebResponse)reqFTP.GetResponse();
fileSize
=
response.ContentLength;
response.Close();
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
}
return
fileSize;
}
//
文件改名
public
void
Rename(
string
currentFilename,
string
newFilename)
{
try
{
//
FileInfo fileInf = new FileInfo(currentFilename);
//
string uri = "ftp:
//
" + ftpServerIP + "/" + fileInf.Name;
string
uri
=
ftpServerIP
+
"
/
"
+
currentFilename;
Connect(uri);
//
连接
reqFTP.Method
=
WebRequestMethods.Ftp.Rename;
reqFTP.RenameTo
=
newFilename;
FtpWebResponse response
=
(FtpWebResponse)reqFTP.GetResponse();
//
Stream ftpStream = response.GetResponseStream();
//
ftpStream.Close();
response.Close();
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
//
获得文件明晰
public
string
[] GetFilesDetailList()
{
return
GetFileList(ftpServerIP
+
"
/
"
, WebRequestMethods.Ftp.ListDirectoryDetails);
}
//
获得文件明晰
public
string
[] GetFilesDetailList(
string
path)
{
return
GetFileList(ftpServerIP
+
"
/
"
+
path, WebRequestMethods.Ftp.ListDirectoryDetails);
}
}
}
查看全文
相关阅读:
Winform读取app.config文件
判断本机只能运行一个winform程序
[导入][链接] Top 10: The best, worst... and craziest uses of RFID
[导入][Tips] 在Ubuntu下限制本机使用的网络带宽
[导入][一点一滴学英语] 20061205
[导入][链接] Linux Distribution Chooser
[导入][链接] Open Source Java Clustering
[导入][链接] 关于Vista的关机选项
[导入]Drip, Transfusion, Perfusion还是Infusion?关于一个词的翻译
[导入][阅读] "Computer Programmer" vs. "Software Developer"
原文地址:https://www.cnblogs.com/dreign/p/1370056.html
最新文章
Entity Framwork CodeFirst 学习笔记三:使用复杂类型
Jquery 操作Html 控件 CheckBox、Radio、Select 控件
C# 线程同步技术(三)之 Monitor 和Lock
Jquery Table 的基本操作
【总结】C# 线程同步技术(二)之 MethodImplAttribute 类和 SynchronizationAttribute 类
Entity Framwork CodeFirst 学习笔记五:数据库映射的默认配置和设置
程序员很平凡,但从事着不平凡的工作!
Entity Framwork CodeFirst 学习笔记二:约定和配置
写给那些看不懂委托的同学
Entity Framwork CodeFirst 学习笔记一:EF 概念和初次接触CodeFirst
热门文章
Entity Framwork CodeFirst 学习笔记四:关系的默认规则与配置
C# 扩展方法
创建一个简单的WCF程序
Winform打造进度条窗口代码,还有取消按钮呢
给button添加背景图片
最大化最小化关闭事件
c# winform DataGridview 单击选中一整行,不是选择一个字段 只能选择一行,不能选多行
设置TabControl控件的样式。背景颜色
数据库连接
绘制圆角窗体
Copyright © 2011-2022 走看看