如何打开或运行转换为byte []的未知文件

时间:2011-01-06 10:06:45

标签: c# .net binary-data

我用来在数据库的byte []中存储文件/文件,我希望用户可以从我的应用程序中查看/运行该文件。

3 个答案:

答案 0 :(得分:4)

您需要知道正在编写的文件的文件扩展名,因此操作系统可以根据扩展名运行默认程序。代码将是这样的:

  byte[] bytes = GetYourBytesFromDataBase();
  string extension = GetYourFileExtension(); //.doc for example
  string path = Path.GetTempFileName() + extension;
  try
  {
      using(BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.Create)))
      {
         writer.Write(yourBytes);
      }

      // open it with default application based in the
      // file extension
      Process p = System.Diagnostics.Process.Start(path);
      p.Wait();
  }
  finally
  {
      //clean the tmp file
      File.Delete(path);
  }

答案 1 :(得分:1)

您还需要将文件扩展名存储在数据库中。如果您没有文件扩展名,则问题变得非常困难,因为您无法依赖操作系统来确定要启动哪个程序来处理该文件。

您可以使用以下模式:

当您使用原始文件扩展名保存文件时,操作系统将查找为扩展程序注册的程序以打开文件。

答案 2 :(得分:0)

正如chibacity和Daniel建议的那样,将文件扩展名存储在数据库中并同意 - 存储文件扩展名,或者至少是一些告诉你文件类型的指示符,这是一个好主意。

如果这些文件的格式是您自己创建的,那么您可能还希望存储有关存储数据的文件格式的版本的信息。开发文件格式很容易改变,如果你不记得用来存储数据的版本,那么你就很难恢复信息。

一般来说,对象持久性也面临同样的问题。