如何从二进制文件c#中读取int数组
本文关键字:读取 int 数组 二进制文件 | 更新日期: 2023-09-27 17:58:33
我有以下代码:
LZW lzw = new LZW();
int[] a = lzw.Encode(imageBytes);
FileStream fs = new FileStream("image-text-16.txt", FileMode.Append);
BinaryWriter w = new BinaryWriter(fs);
for (int i = 0; i < a.Length; i++)
{
w.Write(a[i]);
}
w.Close();
fs.Close();
如何从文件中读取数组元素?我试了好几种方法。例如,我将数组的长度写入文件,并尝试读取数字。然而,我失败了。
注意。我需要得到int数组。
你在找这个吗:
var bytes = File.ReadAllBytes(@"yourpathtofile");
或者更像:
using (var filestream = File.Open(@"C:'apps'test.txt", FileMode.Open))
using (var binaryStream = new BinaryReader(filestream))
{
for (var i = 0; i < arraysize; i++)
{
Console.WriteLine(binaryStream.ReadInt32());
}
}
或者,一个单元测试的小例子:
创建一个包含整数的二进制文件。。。
[Test]
public void WriteToBinaryFile()
{
var ints = new[] {1, 2, 3, 4, 5, 6, 7};
using (var filestream = File.Create(@"c:'apps'test.bin"))
using (var binarystream = new BinaryWriter(filestream))
{
foreach (var i in ints)
{
binarystream.Write(i);
}
}
}
以及一个从二进制文件读取的小示例测试
[Test]
public void ReadFromBinaryFile()
{
// Approach one
using (var filestream = File.Open(@"C:'apps'test.bin", FileMode.Open))
using (var binaryStream = new BinaryReader(filestream))
{
var pos = 0;
var length = (int)binaryStream.BaseStream.Length;
while (pos < length)
{
var integerFromFile = binaryStream.ReadInt32();
pos += sizeof(int);
}
}
}
从二进制文件读取的另一种方法
[Test]
public void ReadFromBinaryFile2()
{
// Approach two
using (var filestream = File.Open(@"C:'apps'test.bin", FileMode.Open))
using (var binaryStream = new BinaryReader(filestream))
{
while (binaryStream.PeekChar() != -1)
{
var integerFromFile = binaryStream.ReadInt32();
}
}
}
我会反过来说。唯一的问题是,在阅读之前你不知道它的大小,所以先计算一下。哦,我会用"使用"来确保物品得到妥善处理(和关闭):
int[] ll;
using (FileStream fs = File.OpenRead("image-text-16.txt"))
{
int numberEntries = fs.Length / sizeof(int);
using (BinaryReader br = new BinaryReader(fs))
{
ll = new int[numberEntries];
for (int i = 0; i < numberEntries; ++i)
{
ll[i] = br.ReadInt32();
}
}
}
// ll is the result
我真的不明白你为什么要从LZW写一个int[],但我想这是有原因的。。。