string filePath = @"C:\Users\wangbinbin\Desktop\TestDemo\TestDemo\files\imgs.rar";
string savePath = string.Format(@"C:\Users\wangbinbin\Desktop\TestDemo\TestDemo\files\jayzai_{0}.rar", DateTime.Now.ToString("yyyyMMddHHmmssffff"));
using (FileStream fsRead = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
//文件总长度
long left = fsRead.Length;
//存储读取结果
byte[] bytes = new byte[1024];
//每次读取长度
int maxLength = bytes.Length;
using (FileStream fsWrite = new FileStream(savePath, FileMode.Append, FileAccess.Write))
{
int start = 0;
int num = 0;
while (left > 0)
{
fsRead.Position = start;
num = 0;
if (left < maxLength)
num = fsRead.Read(bytes, 0, Convert.ToInt32(left));
else
num = fsRead.Read(bytes, 0, maxLength);
if (num == 0)
break;
//保存文件
fsWrite.Write(bytes, 0, bytes.Length);
start += num;
left -= num;
}
}
}
List<FileStreamModel> list = new List<FileStreamModel>();
using (FileStream fsRead = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
//文件总长度
long left = fsRead.Length;
//存储读取结果
byte[] bytes = new byte[1024];
//每次读取长度
int maxLength = bytes.Length;
int start = 0;
int num = 0;
while (left > 0)
{
fsRead.Position = start;
num = 0;
if (left < maxLength)
num = fsRead.Read(bytes, 0, Convert.ToInt32(left));
else
num = fsRead.Read(bytes, 0, maxLength);
if (num == 0)
break;
list.Add(new FileStreamModel { offset = start, file = Convert.ToBase64String(bytes) });
start += num;
left -= num;
}
}
if (list != null && list.Count > 0)
{
using (FileStream fsWrite = new FileStream(savePath, FileMode.Append, FileAccess.Write))
{
foreach (var obj in list)
{
byte[] bytes = Convert.FromBase64String(obj.file);
fsWrite.Write(bytes, 0, bytes.Length);
}
}
}
if (list != null && list.Count > 0)
{
using (FileStream fsWrite = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
{
//OrderBy随机:打乱了分段顺序;自己测试玩的,可以去掉OrderBy
foreach (var obj in list.OrderBy(o => Guid.NewGuid()))
{
byte[] bytes = Convert.FromBase64String(obj.file);
fsWrite.Seek(obj.offset, SeekOrigin.Begin);
fsWrite.Write(bytes, 0, bytes.Length);
}
}
}
if (list != null && list.Count > 0)
{
using (FileStream fsWrite = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
{
//OrderBy随机:打乱了分段顺序;自己测试玩的,可以去掉OrderBy
var binaryWriter = new BinaryWriter(fsWrite);
foreach (var obj in list.OrderBy(o => Guid.NewGuid()))
{
binaryWriter.Seek(obj.offset, SeekOrigin.Begin);
byte[] bytes = Convert.FromBase64String(obj.file);
binaryWriter.Write(bytes);//写入数据
}
binaryWriter.Close();
}
}
public class FileStreamModel
{
public int offset { get; set; }
public string file { get; set; }
}