代码:
FileOptions nocash = (FileOptions)0x20000000;
FileStream fs;
byte[] data;
int x = 32 * 1024;
public Form1()
{
InitializeComponent();
fs = new FileStream(@"C:\Users\iP\Documents\visual studio 2015\Projects\ConsoleApplication32\ConsoleApplication32\bin\Debug\hello.txt",FileMode.OpenOrCreate,Fileaccess.ReadWrite,FileShare.ReadWrite,x,FileOptions.Asynchronous|nocash);
data = new byte[x];
}
private void Form1_Load(object sender,EventArgs e)
{
}
private async void button1_Click(object sender,EventArgs e)
{
int i = 0;
double pos = 0;
try
{
while (await fs.ReadAsync(data,x) > 0)
{
i++;
if (i == 27013)
{
pos = fs.Length - fs.Position;
}
}
}
catch (Exception ex)
{
textBox2.AppendText(pos.ToString()+" "+fs.Position.ToString() + " "+fs.Length.ToString() );
}
}
我正在尝试使用FILE_flaG_NO_BUFFERING读取文件
1-我将内部缓冲区设置为32kb
2-我设置了要读取的数组,长度= 32kb =缓冲区长度
最后一次读取文件时出现错误“参数错误”
- 27013是我在异常“参数错误”之前的上一轮while循环中的值
- pos = 19123->文件中的剩余字节
但是在异常fs.position和fs.lengh具有相同的值之后,却与pos的值相反
我的问题是:pos和fs.position之间的数据在哪里?
或者有一种方法可以读取文件中的剩余字节??
谢谢:)