我使用的是.NET组件,使用期望与全路径名这样的字符串的方法读取特定的二进制文件:C#获取嵌入式资源的完整路径?
Read("c:\\somefile.ext");
我已经把somefile.ext在嵌入式资源我的项目。有没有什么办法可以将某种路径传递给组件的Read命令的嵌入式资源?
我使用的是.NET组件,使用期望与全路径名这样的字符串的方法读取特定的二进制文件:C#获取嵌入式资源的完整路径?
Read("c:\\somefile.ext");
我已经把somefile.ext在嵌入式资源我的项目。有没有什么办法可以将某种路径传递给组件的Read命令的嵌入式资源?
到资源的路径是形式namespace.projectfolder.filename.ext的。
为了阅读的内容,你可以使用一个辅助类,像这样的
public class ResourceReader
{
// to read the file as a Stream
public static Stream GetResourceStream(string resourceName)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Stream resourceStream = assembly.GetManifestResourceStream(resourceName);
return resourceStream;
}
// to save the resource to a file
public static void CreateFileFromResource(string resourceName, string path)
{
Stream resourceStream = GetResourceStream(resourceName);
if (resourceStream != null)
{
using (Stream input = resourceStream)
{
using (Stream output = File.Create(path))
{
input.CopyTo(output);
}
}
}
}
}
谢谢Shamp。这个帮助类可以很好地提取嵌入文件 – Corvinalex
Stream类有一个CopyTo方法,可以用来代替你的CopyStream http://msdn.microsoft.com/en-us/library/dd782932.aspx – Jimmy
谢谢@Jimmy。代码已更新。 – shamp00
您需要使用项目的名称空间以及嵌入资源的名称。例如,假设somefile.ext位于名为ProjectA的项目文件夹资源/文件中。该你应该使用阅读嵌入式资源的正确字符串是:
ProjectA.resources.files.somefile.ext
嵌入的资源不具有“全路径名。”您不能像在文件系统中那样使用文件路径来引用它。你的组件是否有一个'Read'函数,它将采用'Stream'参数? –
不幸的是它没有。所以最简单的选择是不嵌入它和'复制到输出目录'?谢谢!亚历克斯 – Corvinalex