此功能不起作用,因为另一个进程正在使用它。
该函数必须读取文件,对其数据执行某些操作并将结果写入此文件。
private void changeToolStripMenuItem_Click(object sender, EventArgs e)
{
LB2.Visible = true;
TB2.Visible = true;
SaveFileDialog save = new SaveFileDialog();
if (save.ShowDialog() == DialogResult.OK)
{
double maxlen;
BinaryReader read = new BinaryReader(new FileStream(save.FileName, FileMode.Open));
BinaryWriter w = new BinaryWriter(new FileStream(save.FileName, FileMode.Create));
Find(read, out maxlen);
while (read.BaseStream.Position < read.BaseStream.Length)
{
double A = read.ReadDouble();
if (A > 0)
{
read.BaseStream.Seek(-8, SeekOrigin.Current);
w.Write(Find(read, out maxlen));
}
else
w.Write(A);
}
read.BaseStream.Close();
w.BaseStream.Close();
}
}
答案 0 :(得分:2)
我的通灵调试感觉是正在使用的 FILE
您收到错误的原因是您在创建BinaryReader
之前未关闭BinaryWriter
而不是
BinaryReader read = new BinaryReader(new FileStream(save.FileName, FileMode.Open));
BinaryWriter w = new BinaryWriter(new FileStream(save.FileName, FileMode.Create));
...
read.BaseStream.Close();
w.BaseStream.Close();
这样做
BinaryReader read = new BinaryReader(new FileStream(save.FileName, FileMode.Open));
...
read.BaseStream.Close();
BinaryWriter w = new BinaryWriter(new FileStream(save.FileName, FileMode.Create));
...
w.BaseStream.Close();
答案 1 :(得分:2)
BinaryReader read = new BinaryReader(new FileStream(save.FileName, FileMode.Open));
BinaryWriter w = new BinaryWriter(new FileStream(save.FileName, FileMode.Create));
答案 2 :(得分:2)
BinaryReader read = new BinaryReader(new FileStream(save.FileName, FileMode.Open));
BinaryWriter w = new BinaryWriter(new FileStream(save.FileName, FileMode.Create));
相同的文件。 BinaryWriter
可能会遇到异常,但我并不完全确定,因为你没有向我们展示过。您需要先关闭BinaryReader
,然后才能对该文件执行任何其他操作。
答案 3 :(得分:2)
我这样做是为了确保你的视频流已经关闭
using( BinaryReader read = new BinaryReader(new FileStream(save.FileName, FileMode.Open)))
{
using( BinaryWriter w = new BinaryWriter(new FileStream(save.FileName, FileMode.Create)) )
{
// CODE HERE
}
}
听起来你得到了一个例外而且你没有关闭你的溪流/读者/作家。
答案 4 :(得分:0)
将其更改为:
var fs=new FileStream(save.FileName, FileMode.OpenOrCreate);
BinaryReader read=new BinaryReader(fs);
BinaryWriter w=new BinaryWriter(fs);
并删除:
w.BaseStream.Close();