我可以在 C# 中使用 File.Open 打开资源路径吗
Can I open a resourcepath with File.Open in C#
我尝试使用此行在 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;
}
}
EDIT 不重复
在副本中只是打开一个文本文件。用于FileStream mFileStream的地址; mFileStream=File.Open("WindowsFormsApplication2\Resources\sju_tre_g_i.wav",Fil eMode.Open );
如果你想从资源中打开一个 wav 文件,你可以这样做。
using (var steam = Properties.Resources.sju_tre_g_i)
{
// do something
}
请注意,这不是 FileStream
,而是 UnmanagedMemoryStream
。 (但是无论如何资源库都被加载到内存中,它应该没有什么区别吗?)
如果你想确保一个目录存在,并且你想在文件存在时打开文件,在文件不存在时创建它,你可以执行以下操作。
var path = @"C:\mypath\myfile.txt";
Directory.CreateDirectory(path);
using (var stream = File.Open(path, FileMode.OpenOrCreate))
{
// do something
}
您也可以根据需要使用相对路径。
我尝试使用此行在 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;
}
}
EDIT 不重复 在副本中只是打开一个文本文件。用于FileStream mFileStream的地址; mFileStream=File.Open("WindowsFormsApplication2\Resources\sju_tre_g_i.wav",Fil eMode.Open );
如果你想从资源中打开一个 wav 文件,你可以这样做。
using (var steam = Properties.Resources.sju_tre_g_i)
{
// do something
}
请注意,这不是 FileStream
,而是 UnmanagedMemoryStream
。 (但是无论如何资源库都被加载到内存中,它应该没有什么区别吗?)
如果你想确保一个目录存在,并且你想在文件存在时打开文件,在文件不存在时创建它,你可以执行以下操作。
var path = @"C:\mypath\myfile.txt";
Directory.CreateDirectory(path);
using (var stream = File.Open(path, FileMode.OpenOrCreate))
{
// do something
}
您也可以根据需要使用相对路径。