如何从二进制文件c#中读取int数组

Den*_*nis 0 c# binaryfiles bytearray

我有以下代码:

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();
Run Code Online (Sandbox Code Playgroud)

如何从文件中读取数组元素?我尝试了几种方法.例如,我将数组的长度写入文件,我试着读取数字.但是,我失败了.

注意.我需要获取int数组.

bas*_*bas 6

你在找这个:

var bytes = File.ReadAllBytes(@"yourpathtofile");
Run Code Online (Sandbox Code Playgroud)

或者更像是:

        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());
            }
        }
Run Code Online (Sandbox Code Playgroud)

或者,单元测试的一个小例子:

使用整数创建二进制文件...

    [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);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

以及从二进制文件中读取的一个小示例测试

    [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);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

从二进制文件读取的另一种方法

    [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();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)