【问题标题】:Open a file in the directory Resources在目录 Resources 中打开一个文件
【发布时间】:2014-05-06 12:09:20
【问题描述】:

我想在 Resources 目录中打开一个包含的 html 文件,但似乎我的路径错误或我犯了其他错误。

我目前在一个表单类中,如果用户按下按钮 F1,我想打开文件。

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "f1.html";
proc.Start();

【问题讨论】:

  • “资源目录”是什么意思?应用程序资源或硬盘中的某些物理目录?
  • 错误是什么?它是在运行时还是编译时?你去掉那个括号了吗?
  • 我的意思是应用程序资源。错误是找不到文件,是的,我删除了它们。

标签: c# visual-studio-2012 path resources directory


【解决方案1】:

如果你想获取一些嵌入式资源,你需要调用

ResourceManager.GetStream

http://msdn.microsoft.com/en-us/library/zxee5096.aspx

它将返回一个内存流。将内存流读取到字节数组并将字节数组写入某个临时位置,然后调用

Process.Start()

使用临时文件的路径作为参数。

这是一个示例代码:

public class Class1{
    public static void Main(string[] args){
        FileStream stream = null;
        string fullTempPath = null;
        try{
            byte[] page = Resources.HTMLPage1;
            fullTempPath = Path.GetTempPath() + Guid.NewGuid() + ".html";
            stream = new FileStream(fullTempPath, FileMode.Create, FileAccess.Write, FileShare.Read);
            stream.Write(page, 0, page.Length);
            stream.Flush(true);
            stream.Close();
            Process proc = new Process{StartInfo ={FileName = fullTempPath}};
            proc.Start();
        }
        finally{
            if (stream != null){
                stream.Dispose();
            }
        }
    }
}

【讨论】:

  • 为什么打开一个文件这么难......为什么我必须把它写到一个临时位置。你能给我一个完整的例子吗?
  • @user3438236 这并不难,只是按照一些步骤进行操作。我已经用示例代码更新了我的答案。我已经以二进制格式向项目添加了一个名为 HTMLPage1.htm 的资源,以便示例工作。我建议在 temp 中写入以确保您在目录中正确写入。
  • 这对我不起作用:byte[] page = Resources.HTMLPage1;好像我不能使用资源。
  • @user3438236 当然这条线对你不起作用,正如我之前所说,我在我的项目中添加了一个名为 HTMLPage1 的资源。您必须将其替换为项目中资源的名称,因为它在您的项目中将具有不同的名称。
  • 是的,我做到了。我已经添加了资源或 HTML 页面,但我无法使用资源。
【解决方案2】:

使用此代码使用默认浏览器打开一个 html 文件

        string filename = Environment.CurrentDirectory + System.IO.Path.DirectorySeparatorChar + "f1.html";

        System.Diagnostics.Process.Start(filename);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 2020-04-30
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    相关资源
    最近更新 更多