C# - 创建未知大小的字节数组?

mow*_*ker 4 c# byte bytearray class

我正在尝试创建一个类来管理某个文件的打开.我将其中一个属性作为文件的字节数组,但我不知道该文件有多大.我尝试将字节数组声明为:

public byte[] file;
Run Code Online (Sandbox Code Playgroud)

......但它不允许我按照我尝试的方式设置它.br是我的BinaryReader:

file = br.ReadBytes(br.BaseStream.Length);

br.Read(file,0,br.BaseStream.Length);
Run Code Online (Sandbox Code Playgroud)

两种方式都不奏效.我认为这是因为我没有初始化我的字节数组,但如果我不知道它的大小,我不想给它一个大小.有任何想法吗?

编辑:好吧,我认为这是因为Binary Reader的BaseStream长度很长,但它的读者需要int32计数.如果我将64s转换为32s,是否有可能在较大的文件中丢失字节?

Pen*_*hev 5

我在读取文件流时没有问题:

 byte[] file;
 var br = new BinaryReader(new FileStream("c:\\Intel\\index.html", FileMode.Open));
 file = br.ReadBytes((int)br.BaseStream.Length);
Run Code Online (Sandbox Code Playgroud)

您的代码无法编译,因为BaseStream的Length属性属于类型,long但您尝试将其用作int.不允许隐式转换可能导致数据丢失,因此您必须将其强制转换为int显式转换.
更新请
记住,上面的代码旨在突出您的原始问题,不应该按原样使用.理想情况下,您将使用缓冲区以块的形式读取流.看看这个问题以及Jon Skeet建议的解决方案