簡體   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