繁体   English   中英

如何使用SaveFileDialog将字节数组写入文件?

[英]how can i write a byte array to a file using a SaveFileDialog?

基本上,我有一个创建字节数组的程序(通常通过Richtextbox输入,我希望能够创建一个新文件,并通过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); 
         }


     }

您说已经有了“通过Richtextbox手动输入”的字节-但您只是在获取文本的ASCII编码值。 如果您期望解析(例如)解析十六进制,那么您会感到失望。 它真不明白你想要做什么,但如果你保存的文本,你并不需要将其转换为字节数组自己。

接下来,您当前正在写入MemoryStream ,因此显然不会保存到文件...如果您真的想这样做,则应改用FileStream (直接构造或通过File.OpenWrite等构造)。 但是,您不需要自己做所有的工作...

保存一堆字节的最简单方法是:

File.WriteAllBytes(file.FileName, bytes);

保存字符串的最简单方法是:

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

您可以使用File.WriteAllText方法来简单地做到这一点:

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

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

您应该使用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/zh-cn/library/system.io.fileinfo.aspx

有关OpenWrite方法的更多信息: http : //msdn.microsoft.com/zh-cn/library/system.io.fileinfo.openwrite.aspx

暂无
暂无

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

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