我尝试使用此行在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);
答案 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
}
如果您愿意,也可以使用相对路径。