.net - 在 .NET Windows 窗体中读取和写入字节数组

标签 .net file-io

为什么以下代码不起作用(使用 Word 文档和 PDF 文件测试)?

保存的文件启动了正确的应用程序,但已损坏且无法打开。

OpenFileDialog openFileDialog1 = new OpenFileDialog();
if (openFileDialog1.ShowDialog() != DialogResult.OK)
    return;

string filename = openFileDialog1.FileName;
FileStream stream = File.OpenRead(filename);
byte[] array = new byte[stream.Length];

SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.FileName = filename;
if (DialogResult.OK != saveFileDialog1.ShowDialog())
    return;

FileInfo fi = new FileInfo(saveFileDialog1.FileName);
using (FileStream fs = fi.OpenWrite())
{
    fs.Write(array, 0, array.Length);
}

最佳答案

使用文件字节数组方法获得更好的结果。

此外,当您使用一次性元素时,请使用 using

        byte[] array;
        string filename;

        using (OpenFileDialog openFileDialog1 = new OpenFileDialog())
        {
            if (openFileDialog1.ShowDialog() != DialogResult.OK) 
                return;
            filename = openFileDialog1.FileName;
            array = File.ReadAllBytes(filename);
        }

        using (SaveFileDialog saveFileDialog1 = new SaveFileDialog())
        {
            saveFileDialog1.FileName = filename;
            if (DialogResult.OK != saveFileDialog1.ShowDialog()) 
                return;
            File.WriteAllBytes(array);
        }

关于.net - 在 .NET Windows 窗体中读取和写入字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8696324/

相关文章:

.net - Powershell、PInvoke 和 GetLastError

c# - 如何为 Windows Phone 棋盘游戏编写简单的 AI 代码?

java - android 内部存储写入文件后没有文件

java - 将输入流读取到缓冲区的最佳方法

python - 在 Python 中将空字符串写入文本文件

c# - 比较大文本文件 - 比较散列是否比使用文件的子集更快?

.net - Silverlight:TargetType 的属性类型无效 ="{x:Type TextBlock}"

c# - 将接口(interface)派生类与 NEST 和 ElasticSearch 结合使用

python - 在 Python 中多次读取同一个文件

c++ - ofstream.put();不写整数?