FileStream在Linux上的行为有所不同

时间:2018-10-22 04:42:49

标签: .net linux core

(DotNet Core 2.1)我正在使用FileStream将字节写入文件。在Windows上进行开发,并在ARM 32位处理器上定位Yocto Linux。

在Windows上运行时,我得到正确的结果文件。 在Linux上运行的相同代码会生成错误的文件。

将两个文件同时放入Linux系统并使用“ file”命令检查它们会产生不同的结果:

$ file pc.iso  # <-- GOOD
pc.iso: data

$ file linux.iso # <-- BAD
linux.iso: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", 
sectors/cluster 64, reserved sectors 64, Media descriptor 0xf8, sectors/track
63, heads 255, sectors 100000000 (volumes > 32 MB), FAT (32 bit), sectors/FAT
12224, reserved 0x1, serial number 0x53ab8ba2, unlabeled

代码示例:

using (var stream = new FileStream(path, FileMode.Open, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough ))
{
    stream.Seek(start, SeekOrigin.Begin);

    for (int i = 0; i < amount; i++)
    {
        var bytes = GetBytes(i);
        stream.Write(bytes, 0, bytes.Length);
    }
}

为什么这样的事情在Linux上会产生不同的结果?和/或如何防止它以某种方式生成FAT32图像?

0 个答案:

没有答案
相关问题