c# FileStream 的position属性是咋回事?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace _10通过文件流实现大文件拷贝
{
class Program
{
static long position=0;
static void Main(string[] args)
{
string source = @"E:\qvod\处女喪失.rmvb";
string target = @"C:\DownLoad\dsfd";
FileCopy(source, target);
Console.WriteLine("ok");
Console.ReadKey();
}
//大文件拷贝
private static void FileCopy(string source, string target)
{
//FileStream ff=new FileStream("",FileMode.Open,FileAccess.ReadWrite
//读取源文件
using (FileStream fsRead = new FileStream(source, FileMode.Open))
{
//创建一个写入文件的文件流
byte[] byts = new byte[1024 * 1024*10]; //2MB
while (true)
{
//1.从源文件中读取一定的字节数保存到byts中。
//参数1:表示把源文件中的数据读取,并保存到byts数组中
//参数2:表示从数组中的第几个索引开始存放数据。
//参数3:本次最多能读取的字节数,一般为数组的长度。
//返回值count,表示本次实际读取的字节数。
int count = fsRead.Read(byts, 0, byts.Length);
using(FileStream fsWrite=new FileStream(target,FileMode.Create))
{
fsWrite.Position = position;
if (count == 0)
{
break;
}
//将刚刚读取出来的数据,byts中的数据,写入到新文件中。
//参数1:把byts中的数据写入到文件
//参数2:从byts数组中的第0个索引开始写入
//参数3:本次写入操作要写入的字节的个数。
fsWrite.Write(byts, 0, count);
//Console.Write(". ");
position = fsWrite.Position;
Console.WriteLine("已完成:{0}%", ((double)fsWrite.Position / fsRead.Length) * 100);
}
}
}
}
}
}
position属性不是根据写入的内容增加吗?为啥挂了?