繁体   English   中英

用C#写入二进制文件

[英]Write to a binary file with C#

我正在尝试加密字符串并将其写入二进制文件。 我想反过来做。 这是我的代码,但是不起作用。

FileStream stream = new FileStream(saveFileDialog1.OpenFile().ToString(),   FileMode.Create);
BinaryWriter writer = new BinaryWriter(stream);
String temp = "";
serialList.ForEach(delegate(record p)
{ 
    temp = String.Format("{0},{1}#", p.serial, p.option);
    byte[] dataB = System.Text.Encoding.Unicode.GetBytes(String.Format("{0},{1}#", p.serial, p.option));
    byte[] enc = Encrypt(dataB, "gio!");
    writer.Write(enc);
});
writer.Write('1');
writer.Close();
stream.Close();

有什么问题吗?

SaveFileDialog.OpenFile已经返回您的Stream对象。 您不需要奇怪的.ToString()调用,它可能会也可能不会为您提供文件名/完整的文件路径。

本质上,您的代码创建2个流:一个在FileOpenDialog中指定的位置,另一个在相对路径中的文件名等于“ Stream.ToString()”的结果的某个位置。 第一流(您可能正在查看的流)将为空,因为您没有向其中写入任何内容。

注意:请考虑使用using(...)而不是手动.Close调用,因为它可以创建更安全的代码(在发生异常的情况下,您不会丢掉流)。

在关闭流之前,像这样冲洗它。

writer.Flush();
writer.Close();

另外,您可以在开始写入之前将writer.AutoFlush设置为true,但这可能会稍微慢一些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM