我在ftp和远程处理项目,我经常传输文件,而发送文件if 网络失败,程序必须等待,直到连接恢复,并且在恢复后,它必须从写入最后一个字节的地方传输文件。如何做任何想法。
所以我应该怎么做我将检查文件并获取大小从总大小中减去它并开始复制结果大小。它会起作用
答案 0 :(得分:1)
答案 1 :(得分:1)
这不是C#解决方案,但Getright做得非常好。
以编程方式,对于编写文件,我认为要恢复传输,您需要连接,读取文件(或以其他方式,确定它有多大),然后打开它并附加剩余数据。可能值得检查现有文件中的最后N个字节是否与本地文件中的N个字节匹配。阅读将类似 - 跳到文件的特定部分并开始回读。
[编辑] 如果您已设法建立FTP连接,则所需命令为REST:
RESTART(REST)
参数字段表示要重新启动文件传输的服务器标记。此命令不会导致文件传输,但会将文件跳过指定的数据检查点。此命令后应紧跟相应的FTP服务命令,该命令将导致文件传输恢复。
如果您还没有找到/写过,我确定您可以使用a few simple C# ftp client libraries。
答案 2 :(得分:1)
答案 3 :(得分:0)
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");
这是我通过远程发送文件时使用的方法。现在我在FTP中尝试这个