C# 如何传输(上传/下载)由于网络故障而停止的文件,必须从最后写入的字节恢复
我在ftp和远程处理中做项目,我经常传输文件,如果需要的话发送文件 网络失败程序必须等待连接恢复,恢复后,它必须从最后一个字节写入的位置传输文件。如何做有什么想法吗C# 如何传输(上传/下载)由于网络故障而停止的文件,必须从最后写入的字节恢复,c#,ftp,C#,Ftp,我在ftp和远程处理中做项目,我经常传输文件,如果需要的话发送文件 网络失败程序必须等待连接恢复,恢复后,它必须从最后一个字节写入的位置传输文件。如何做有什么想法吗 那么我该怎么做呢?我会检查文件,从总大小中减去大小,然后开始复制结果大小。它会起作用吗?你应该使用这样的方法,可以恢复中断的传输 标签c#真的是这里的要求吗 对不起,我帮不上忙# 编辑:是的,乔恩说的是真的 恢复的传输实际上不会从下一个字节开始。将快速检查上一个零件是否正确转移 您应该使用这样的方法来恢复中断的传输 标签c#真的是这
那么我该怎么做呢?我会检查文件,从总大小中减去大小,然后开始复制结果大小。它会起作用吗?你应该使用这样的方法,可以恢复中断的传输 标签c#真的是这里的要求吗 对不起,我帮不上忙# 编辑:是的,乔恩说的是真的
恢复的传输实际上不会从下一个字节开始。将快速检查上一个零件是否正确转移 您应该使用这样的方法来恢复中断的传输 标签c#真的是这里的要求吗 对不起,我帮不上忙# 编辑:是的,乔恩说的是真的 恢复的传输实际上不会从下一个字节开始。将快速检查上一个零件是否正确转移 这不是C#解决方案,但做得很好 从编程角度讲,对于编写文件,我认为要恢复传输,您需要连接、读取文件(或者以其他方式,确定文件有多大),然后打开文件并附加剩余的数据。可能需要检查现有文件中的最后N个字节是否与本地文件中的字节匹配。读取类似-跳到文件的特定部分,然后开始回读 [编辑]如果您已成功建立FTP连接,则需要执行以下命令: 重新启动(休息) 参数字段表示要重新启动文件传输的服务器标记。此命令不会导致文件传输,但会将文件跳过到指定的数据检查点。该命令后应立即执行相应的FTP服务命令,该命令应使文件传输恢复 我相信如果您还没有找到/编写一个解决方案,您可以使用它。这不是一个C#解决方案,但它做得很好
FileInfo finfo = new FileInfo("E:\\butterfly.mpg");
FileInfo sourceinfo = new FileInfo("H:\\butterfly.mpg");
int sourceLength = 0;
sourceLength = (int)sourceinfo.Length;
int totalLength = (int)finfo.Length;
int RemaingDatalength = 0;
RemaingDatalength = sourceLength - totalLength;
int appLength = 0;
int Remaining = 0;
int bufferLength = 12488;
byte[] buffer = new byte[bufferLength];
int pointer = 1;
FileStream fsa = new FileStream("E:\\butterfly.mpg", FileMode.Append);
fss = new FileStream("H:\\butterfly.mpg", FileMode.Open);
while (pointer != 0)
{
fss.Position = (long)totalLength;
fss.Read(buffer, 0, bufferLength);
totalLength += bufferLength;
appLength += bufferLength;
fsa.Write(buffer, 0, bufferLength);
Remaining = RemaingDatalength - appLength;
if (Remaining < bufferLength)
{
byte[] buff = new byte[Remaining];
fss.Read(buff, 0, Remaining);
fsa.Write(buff, 0, Remaining);
break;
}
}
fss.Close();
fsa.Close();
MessageBox.Show("Filetransfer Completed");
从编程角度讲,对于编写文件,我认为要恢复传输,您需要连接、读取文件(或者以其他方式,确定文件有多大),然后打开文件并附加剩余的数据。可能需要检查现有文件中的最后N个字节是否与本地文件中的字节匹配。读取类似-跳到文件的特定部分,然后开始回读
[编辑]如果您已成功建立FTP连接,则需要执行以下命令:
重新启动(休息)
参数字段表示要重新启动文件传输的服务器标记。此命令不会导致文件传输,但会将文件跳过到指定的数据检查点。该命令后应立即执行相应的FTP服务命令,该命令应使文件传输恢复
如果您还没有找到/编写一个,我相信您可以使用它。FileInfo finfo=newfileinfo(“E:\\butterfly.mpg”);
FileInfo finfo = new FileInfo("E:\\butterfly.mpg");
FileInfo sourceinfo = new FileInfo("H:\\butterfly.mpg");
int sourceLength = 0;
sourceLength = (int)sourceinfo.Length;
int totalLength = (int)finfo.Length;
int RemaingDatalength = 0;
RemaingDatalength = sourceLength - totalLength;
int appLength = 0;
int Remaining = 0;
int bufferLength = 12488;
byte[] buffer = new byte[bufferLength];
int pointer = 1;
FileStream fsa = new FileStream("E:\\butterfly.mpg", FileMode.Append);
fss = new FileStream("H:\\butterfly.mpg", FileMode.Open);
while (pointer != 0)
{
fss.Position = (long)totalLength;
fss.Read(buffer, 0, bufferLength);
totalLength += bufferLength;
appLength += bufferLength;
fsa.Write(buffer, 0, bufferLength);
Remaining = RemaingDatalength - appLength;
if (Remaining < bufferLength)
{
byte[] buff = new byte[Remaining];
fss.Read(buff, 0, Remaining);
fsa.Write(buff, 0, Remaining);
break;
}
}
fss.Close();
fsa.Close();
MessageBox.Show("Filetransfer Completed");
FileInfo sourceinfo=newfileinfo(“H:\\butterfly.mpg”);
int sourceLength=0;
sourceLength=(int)sourceinfo.Length;
int totalLength=(int)finfo.Length;
整数RemaingDatalength=0;
RemaingDatalength=源长度-总长度;
int appLength=0;
剩余整数=0;
int bufferLength=12488;
字节[]缓冲区=新字节[bufferLength];
int指针=1;
FileStream fsa=新文件流(“E:\\butterfly.mpg”,FileMode.Append);
fss=新文件流(“H:\\butterfly.mpg”,FileMode.Open);
while(指针!=0)
{
fss位置=(长)总长度;
读取(缓冲区,0,缓冲区长度);
总长度+=缓冲长度;
应用长度+=缓冲长度;
写入(缓冲区,0,缓冲区长度);
剩余=剩余数据长度-应用长度;
if(剩余长度<缓冲区长度)
{
字节[]buff=新字节[剩余];
fss.Read(buff,0,剩余);
fsa.Write(buff,0,剩余);
打破
}
}
fss.Close();
fsa.Close();
MessageBox.Show(“文件传输完成”);
这是我通过远程发送文件时使用的方法。现在我正在FTP中尝试此方法;
FileInfo sourceinfo=newfileinfo(“H:\\butterfly.mpg”);
int sourceLength=0;
sourceLength=(int)sourceinfo.Length;
int totalLength=(int)finfo.Length;
整数RemaingDatalength=0;
RemaingDatalength=源长度-总长度;
int appLength=0;
剩余整数=0;
int bufferLength=12488;
字节[]缓冲区=新字节[bufferLength];
int指针=1;
FileStream fsa=新文件流(“E:\\butterfly.mpg”,FileMode.Append);
fss=新文件流(“H:\\butterfly.mpg”,FileMode.Open);
while(指针!=0)
{
fss位置=(长)总长度;
读取(缓冲区,0,缓冲区长度);
总长度+=缓冲长度;
应用长度+=缓冲长度;