c# - 如何将字节数组转换回文件并使用 C# 自动打开它?

标签 c# .net file-io

我正在编写一些代码以将文件附件添加到我正在构建的应用程序中。

我已经添加和删除工作,但我不知道从哪里开始实现开放。

我有一个字节数组(来自表字段),但我不知道如何让它自动打开,例如

如果我有一个 PDF 字节数组,我如何让我的应用程序自动打开 Acrobat 或任何当前分配给扩展的应用程序使用 C#?

最佳答案

为了在任何外部应用程序中打开它,您需要将字节写入磁盘,然后使用 Process.Start 在临时文件上启动关联的应用程序。只需将临时文件名(带有适当的扩展名)作为 Process.Start 的唯一参数传递,它就会在适当的应用程序中打开该文件。

某些应用程序可能有办法提供字节流,但这需要由目标应用程序明确处理。


对于示例代码,您可以执行以下操作:

byte[] filedata = GetMyByteArray();
string extension = GetTheExtension(); // "pdf", etc

string filename =System.IO.Path.GetTempFileName() + "." + extension; // Makes something like "C:\Temp\blah.tmp.pdf"

File.WriteAllBytes(filename, filedata);

var process = Process.Start(filename);
// Clean up our temporary file...
process.Exited += (s,e) => System.IO.File.Delete(filename); 

关于c# - 如何将字节数组转换回文件并使用 C# 自动打开它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2500969/

相关文章:

java - Java 中的内存映射 zip 文件

c# - 从 Azman 获取属于角色的任务列表

c# - 线程与单线程

ruby - 确定 Ruby 中的最后一行

.net - 系统(PID 4)正在使用端口 8081,如何阻止它

.net - 将 .NET Core 应用程序部署为 Docker 化容器的好处?

c - 使用 "$**"在 Makefile 中直接输入文件

c# - 如何对被测类引发的事件进行单元测试?

c# - Linq 集合在 foreach 的下一次迭代中重置

c# - 保护 WCF NetHttpBinding 的最有效方法