流读取文件,并创建动态字节

时间:2016-06-09 07:09:41

标签: c# file

我遇到了这个错误

该进程无法访问,因为它正由另一个进程使用。

错误显示在var br = new BinaryReader(new FileStream(fileName, FileMode.Open));

我试图这样做,因为我希望字节是动态的。

    foreach (string dir in dirs)
            {

                string fileName = Path.GetFileName(dir);


                using (Stream source = System.IO.File.OpenRead(dir))
                {
                    byte[] buffer;
                    var br = new BinaryReader(new FileStream(fileName, FileMode.Open));
                    buffer = br.ReadBytes((int)br.BaseStream.Length);

                }
}

2 个答案:

答案 0 :(得分:1)

你不能这样做:

using (var source = new FileStream(dir, FileMode.Open))
{
     byte[] buffer;
     var br = new BinaryReader(source);
     buffer = br.ReadBytes((int)br.BaseStream.Length);
}

替代方案,您可以这样做:

File.ReadAllBytes(dir);

答案 1 :(得分:1)

首次打开文件:

System.IO.File.OpenRead(dir)

这里你试图第二次打开同一个文件:

new FileStream(fileName, FileMode.Open)

当然该文件已被占用。


重写代码如下:

using (var source = File.OpenRead(dir))
using (var br = new BinaryReader(source))
{
    byte[] buffer = br.ReadBytes((int)br.BaseStream.Length);
}