c# - 以文件窗口形式打开字节数组

标签 c# arrays winforms file

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

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

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

谢谢,卡尔

最佳答案

如果您想在应用程序中打开(就像 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 附加扩展名。

关于c# - 以文件窗口形式打开字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18764155/

相关文章:

c# - 遍历两个继承类(相同基类)的两个列表

c# - Server.UrlEncode(string s)... 没有

c - 设置整数指针数组

c# - .Net 形式焦点

c# - 使用 Linq 执行具有多个值的 Contains

c# - 单击任务栏中的应用程序图标时 WPF 中的对话框消失

javascript - 在对数组中找到最接近的数字对的最快方法是什么

javascript - 删除元素时如何保留数组键?

vb.net - 圆角矩形不准确

c# - 如何使窗口具有任务栏文本但没有标题栏