c# 写文件问题

来源:百度知道 编辑:UC知道 时间:2024/09/27 12:22:07
大家看下面一点代码,我把变量a和字符串FFFF写入文件后,用UE打开文件,里头的内容怪怪的。。大家帮我试试。。

int a = 0x00112233;
FileStream My_File = new FileStream("My_bin_File.bin", FileMode.OpenOrCreate);
BinaryWriter bw = new BinaryWriter(My_File);
bw.Write(a);
bw.Write("FFFF");
哦,忘了说了,我就是要二进制写入文件。。写入文件后,我的文件里应该是这样的:
33 22 11 00 46 46 46 46
但是用UE打开后是这么显示的:
3" FFFF

谢谢2楼,的确是这样。。UE已经能正确显示了。。但是显示的数据是这样的:
33 22 11 00 04 46 46 46 46
这是怎么回事,多了个04 ?

查了一下MSDN,BinaryWriter.Write(string)
将有长度前缀的字符串按 BinaryWriter 的当前编码写入此流,并根据所使用的编码和写入流的特定字符,提升流的当前位置。

也就是说那个04,是字符串的长度,你如果写入ABCDE,那就会多一个05了
如果用我的方法写入,就不会写入这个长度符,看你的需要写吧。

那就写入byte数组吧:
byte[] info = new UTF8Encoding(true).GetBytes(new char[] {(char)0x00 , (char)0x11, (char)0x22, (char)0x33});
My_File.Write(info, 0, info.Length);
info = new UTF8Encoding(true).GetBytes("FFFF");
My_File.Write(info, 0, info.Length);
My_File.Close();

FileStream 一般用于写入二进制
写普通文本建议用StreamWriter

StreamWriter a = new StreamWriter("c:\\a.txt");
a.WriteLine("ddd");
a.Close();

你的代码没问题

你说的UE打开看到的不对,是因为你的 UE 没有切换到 16进制模式,
你点击 UE 工具栏上的 一个 “10100..” 样式的图标,就OK了