C#将字节数组附加到文件的开头(不在内存中加载整个文件)

本文关键字:文件 内存 加载 字节数 字节 数组 开头 | 更新日期: 2023-09-27 18:27:34

问题:是否可以(以及如何)在不将整个文件加载到内存中的情况下将字节数组附加到现有文件中。

更具体地说:目标是进行转换:

00000000 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
00000010 00 00 10 00 00 00 08 00 08 02 00 00 00 29 F0 61
00000020 E9 00 00 00 09 70 48 59 73 00 00 17 12 00 00 17
00000030 12 01 67 9F D2 52 00 00 20 00 49 44 41 54 78 DA
00000040 DC BD DB 76 24 39 AE 2C 08 F0 E2 1E AA EA F9 FF
00000050 FF 9C 5E A7 53 EE BC 60 1E 8C 80 C3 AF 0A 29 B3
00000060 76 EF 33 7A A8 A5 52 46 F8 85 04 41 10 30 33 30
00000070 33 D3 37 7F 44 E4 07 DF FA 5F F5 C3 CC 22 F2 F0
00000080 AF 97 6F 8A AF E0 BB 0F 57 B0 7F 12 22 3E FD FD

进入这个:

--added bytes
00000000 74 65 73 74 74 65 73 74 74 65 73 74 74 65 73 74
--added bytes
00000010 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
00000020 00 00 10 00 00 00 08 00 08 02 00 00 00 29 F0 61
00000030 E9 00 00 00 09 70 48 59 73 00 00 17 12 00 00 17
00000040 12 01 67 9F D2 52 00 00 20 00 49 44 41 54 78 DA
00000050 DC BD DB 76 24 39 AE 2C 08 F0 E2 1E AA EA F9 FF
00000060 FF 9C 5E A7 53 EE BC 60 1E 8C 80 C3 AF 0A 29 B3
00000070 76 EF 33 7A A8 A5 52 46 F8 85 04 41 10 30 33 30
00000080 33 D3 37 7F 44 E4 07 DF FA 5F F5 C3 CC 22 F2 F0

我整个上午都在想办法解决这个问题,但似乎找不到有效的解决方案。我知道可以在不将文件加载到内存的情况下在末尾附加文件,但我需要附加开头。

提前感谢

C#将字节数组附加到文件的开头(不在内存中加载整个文件)

简单地说,这是不可能的。文件不是这样工作的。根据您的操作方式,您可能不必同时将整个文件加载到内存中,但您需要加载文件的每个字节,并在写入前端的字节之后写入。