gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:56:03 24 4
gpt4 key购买 nike

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

public byte[] file;

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

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

br.Read(file,0,br.BaseStream.Length);

这两种方法都行不通。我假设这是因为我没有初始化我的字节数组,但如果我不知道大小,我不想给它一个大小。有什么想法吗?

编辑:好的,我认为这是因为 Binary Reader 的 BaseStream 长度很长,但它的读取器采用 int32 计数。如果我将 64 位转换为 32 位,是否有可能在较大的文件中丢失字节?

最佳答案

我在读取文件流时没有遇到任何问题:

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

您的代码无法编译,因为 BaseStream 的 Length 属性属于 long 类型,但您正试图将其用作 int。不允许可能导致数据丢失的隐式转换,因此您必须将其显式转换为 int
更新
请记住,上面的代码旨在突出您的原始问题,不应按原样使用。理想情况下,您将使用缓冲区以 block 的形式读取流。看看this question and the solution suggested by Jon Skeet

关于C# - 创建未知大小的字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com