读书人

C#资料读写需要MD5值一样 求解

发布时间: 2012-09-06 10:37:01 作者: rapoo

C#文件读写,需要MD5值一样 求解
下面是我写的代码,问题也在代码中注解

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Collections.Specialized;
using System.Runtime.Remoting.Messaging;
using System.IO;


namespace test3
{

class Program
{

static void Main(string[] args)
{
FileStream fs = new FileStream(@"c:\A.rar", FileMode.Open);

FileStream fs2 = new FileStream(@"c:\2.rar", FileMode.Create);
// 1.当 int bufferSize = 1;时,复制出来的文件是一样的,也就是说MD5是相同的
// 2.当int bufferSize = 1024;时,复制出来的文件MD5值不同了。
//我需要第二种方法,有什么方法可以解决此问题
//因为第一种方法对于大文件变态的耗时了。
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int read = 0;
int hasRead = 0;
fs.Position = 0;
fs2.Position = 0;
while (fs.Position < fs.Length)
{
read = fs.Read(buffer, 0, bufferSize);
fs2.Write(buffer, 0, bufferSize);
fs2.Flush();
fs2.Position = fs2.Position;
//hasRead += read;
//Console.WriteLine("complete "+hasRead .ToString ());
//Thread.Sleep(100);
}

Console.ReadKey();
}
}
}



[解决办法]
while (fs.Position < fs.Length)
{
read = fs.Read(buffer, 0, bufferSize);
fs2.Write(buffer, 0, read);
fs2.Flush();
fs2.Position = fs2.Position;
//hasRead += read;
//Console.WriteLine("complete "+hasRead .ToString ());
//Thread.Sleep(100);
}
自己看红色部分,修改下就没问题了。
[解决办法]

探讨
while (fs.Position < fs.Length)
{
read = fs.Read(buffer, 0, bufferSize);
fs2.Write(buffer, 0, read);
fs2.Flush();
fs2.Position = fs2.Position;
//hasRead += read;
//Console.WriteLi……

读书人网 >C#

热点推荐