打开字节数组作为文件窗口形式

时间:2013-09-12 12:21:54

标签: c# winforms file bytearray

在Windows窗体应用程序中,我有一个存储为byte []的文件。

当用户点击按钮时,我想打开文件而不将其保存在本地。这是可能的,如果,那么如何?

或者我必须将字节数组保存为本地文件然后运行此文件吗?

谢谢,卡尔

1 个答案:

答案 0 :(得分:6)

如果你想在一个应用程序中打开(就像你双击一个具有适当扩展名的文件那样的Windows),你必须将其内容写入一个文件:

/// <summary>
/// Saves the contents of the <paramref name="data"/> array into a 
/// file named <paramref name="filename"/> placed in a temporary folder,
/// and runs the associated application for that file extension
/// in a separate process.
/// </summary>
/// <param name="data">The data array.</param>
/// <param name="filename">The filename.</param>
private static void OpenInAnotherApp(byte[] data, string filename)
{
    var tempFolder = System.IO.Path.GetTempPath();
    filename = System.IO.Path.Combine(tempFolder, filename);
    System.IO.File.WriteAllBytes(filename, data);
    System.Diagnostics.Process.Start(filename);
}

用法:

var someText = "This is some text.";
var data = Encoding.ASCII.GetBytes(someText);

// open in Notepad
OpenInAnotherApp(data, "somename.txt");

请注意,只有扩展名才需要文件名,您应该使用随机Guid或其他内容,并根据已知的mimetype附加扩展名。