2011-09-28 90 views
1

基本上我有有一個創建字節(經由一個RichTextBox手動輸入的陣列的方案,我想能夠創建一個新文件,並且經由SaveFileDialog()方法保存在該文件中的字節數。如何使用SaveFileDialog將字節數組寫入文件?

的代碼我想出是:

byte[] bytes = Encoding.ASCII.GetBytes(richTextBox1.Text); 
Stream stream = new MemoryStream(bytes); 

SaveFileDialog file = new SaveFileDialog(); 
file.ShowDialog(); 

    if (file.FileName != "") 
    { 
     using (BinaryWriter bw = new BinaryWriter(stream)) 
     { 
      bw.Write(bytes); 
     } 


    } 
+0

我覺得Tittle是主題請編輯! PS:SaveFileDiallg()不是一個方法。 – Burimi

+1

你的問題是什麼? – Vasya

回答

5

你說你已經得到了字節「通過一個RichTextBox手動輸入」 - 但你剛開文本的ASCII編碼值如果您正期待。 (說)解析十六進制,那麼你會失望。它不是很清楚你想做什麼,但如果你試圖保存文本,你不需要c將它反轉爲一個字節數組。

接下來,你目前正在寫一個MemoryStream,所以它顯然不會保存到一個文件...如果你真的想這樣做,你應該使用FileStream代替(無論是直接建造或通過File.OpenWrite等)。不過,你不需要做所有的工作自己......

保存一堆字節的最簡單的方法是:

File.WriteAllBytes(file.FileName, bytes); 

保存一個字符串的最簡單的方法是:

File.WriteAllText(file.FileName, text); // Optionally specify an encoding too 
+0

我假定他想在文件中完全寫入字節,而不是文本。但我不知道 – Vasya

+0

@ Praetor12:那麼目前,數據只是從文本轉換而來...... –

+0

本質上這是一個二進制編輯器的想法。字節將在richtextbox中輸入,然後寫入文件。 Encoding.ASCII.GetBytes()方法在從richtextbox獲取字節值時似乎是可以的。我只需要保存它。現在嘗試你的解決方案。 –

1

你可以做,只需使用File.WriteAllText方法:

SaveFileDialog file = new SaveFileDialog(); 
    file.ShowDialog(); 

    if (file.FileName != "") 
    { 
     File.WriteAllText(file.FileName, richTextBox1.Text); 
    } 
+0

我想要做的事情,雖然不是寫ASCII值,而是最初作爲ascii值在richtextbox中輸入的字節。這就是爲什麼我(嘗試)將這些值轉換爲字節數組。 –

0

您應該使用的FileInfo來讀/寫文件。所以你可以在訪問它之前做更多的檢查。 按照您已經完成的步驟創建ByteArray,這樣您就可以決定編碼方式,而且您將來也很安全。 使用DialogResult檢查用戶的響應,然後交叉檢查結果FileName。 請不要忘了,也許該文件已經存在,並且用戶想要覆蓋或追加其:-)

 SaveFileDialog file = new SaveFileDialog(); 
     DialogResult dialogResult = file.ShowDialog(); 
     if (dialogResult == DialogResult.OK) { 
      if (String.IsNullOrEmpty(file.FileName)) { 
       //Inform the user 
      } 
      string path = file.FileName; 
      FileInfo fi = new FileInfo(path); 

      // Open the stream for writing. 
      using (FileStream fs = fi.OpenWrite()) { 
       Byte[] info = Encoding.ASCII.GetBytes(richTextBox1.Text); 

       // Add some information to the file. 
       fs.Write(info, 0, info.Length); 
      } 


     } else { 
      //Inform the user 
     } 

約FileInfo的更多信息: http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx

更多關於OpenWrite方法信息: http://msdn.microsoft.com/en-us/library/system.io.fileinfo.openwrite.aspx