我可以在C#中使用File.Open打开资源路径吗?

时间:2017-06-24 14:27:31

标签: c# resources filestream

我尝试使用此行在C#中打开资源文件,我看不出为什么这不起作用。我试图使用build action =“embedded resource”和“none”。 我已经尝试了所有复制到输出目录的方法。 我是否需要一些特殊的方法来使用c#打开资源文件到fileStream?

    public bool openFileStream()
    {
        FileStream mFileStream;
        String[] s=System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
        String mFilename =null;
        for (int i = 0; i < s.Length;i++ )
        {
            s[i] = s[i].Replace(".", "\\");

            if (s[i].Contains("sju_tre_g_i"))
            {
                s[i] = s[i].Substring(0, s[i].Length - 4);
                s[i] = s[i] + ".wav";
                mFilename = s[i];

            }
            System.Diagnostics.Debug.WriteLine(i + "___Outputname:" + mFilename);
        }
        System.Diagnostics.Debug.WriteLine(mFilename);
        try{
            mFileStream = File.Open(mFilename,FileMode.Open );
            return true;
        }
        catch(Exception)
        {
            return false;
        }
    }

编辑不重复 在副本中只需要打开一个文本文件。它是用于FileStream mFileStream的地址; mFileStream = File.Open(“WindowsFormsApplication2 \ Resources \ sju_tre_g_i.wav”,Fil eMode.Open);

1 个答案:

答案 0 :(得分:0)

如果你想从资源中打开一个wav文件,你可以这样做。

using (var steam = Properties.Resources.sju_tre_g_i)
{
     // do something       
}

请注意,这不是FileStream,而是UnmanagedMemoryStream。 (但是,无论如何将ressource库加载到内存中它应该没有区别?)

如果您想确保某个目录存在,并且您希望在文件存在时打开该文件并在不存在时创建该文件,则可以执行以下操作。

var path = @"C:\mypath\myfile.txt";
Directory.CreateDirectory(path);
using (var stream = File.Open(path, FileMode.OpenOrCreate))
{
     // do something            
}

如果您愿意,也可以使用相对路径。