📄 ftpclient.cs
字号:
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.ComponentModel;
namespace IsoFtp
{
public class StreamCopy
{
/// <summary>
/// 进度条,Max=100,Min=1
/// </summary>
public int Proess;
/// <summary>
/// 进度信息事件
/// </summary>
/// <param name="mini">最小值</param>
/// <param name="max">最大值</param>
/// <param name="value">当前值</param>
/// <param name="sender">控件</param>
public delegate void OnProgressEventHandler(object sender, long mini, long max, long value);
/// <summary>
/// 进度信息事件
/// </summary>
[Description("进度信息事件")]
public event OnProgressEventHandler OnProgress;
/// <summary>
/// 拷贝文件
/// </summary>
/// <param name="txtM">目标文件</param>
/// <param name="txtY">原文件</param>
/// <param name="size">buffer大小</param>
public long CopyFile(string txtY, string txtM, int size)
{
ISOCreater.WorkState = true;
//读
System.IO.Stream fs = new System.IO.FileStream(txtY, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
long buffersize = fs.Length;
long nsize = size;
int nbuffer = int.Parse((buffersize / nsize).ToString());
nbuffer = (nbuffer > 0) ? nbuffer : 1;
//写
System.IO.FileInfo fi = new System.IO.FileInfo(txtM);
System.IO.FileStream fsw = fi.Create();
int i = 1;
int bfsz = 0;
if (int.TryParse(buffersize.ToString(), out bfsz))
{
size = (size >= bfsz) ? bfsz : size;
}
byte[] buffer = new byte[size];
while (fs.Read(buffer, 0, size) > 0)
{
if (!ISOCreater.WorkState)
{
fsw.Close();
System.IO.File.Delete(txtM);
break;
}
Proess = i * 100 / nbuffer;
if (OnProgress != null)
{
OnProgress(this, 1, 100, Proess);
}
//写
fsw.Write(buffer, 0, size);
i++;
}
fsw.Close();
fs.Close();
return buffersize;
}
}
}
//流到FTP或资源服务器上没有删除
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -