本文介绍了如何从资源中保存二进制文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果这行是正确的,接下来要写什么?:
If this line is correct, what to write next?:
Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("some_file");
其他
怎么样?
找到了,但是不能使用:我在资源中有0.exe命名为"_0",我尝试过:
else
How?
Found this, but can''t use: I have 0.exe named as "_0" in resources, I tried:
ExtractEmbeddedBinaryFile(Assembly.GetExecutingAssembly(), "_0", "dest.exe");
ExtractEmbeddedBinaryFile(Assembly.GetExecutingAssembly(), "0", "dest.exe");
ExtractEmbeddedBinaryFile(Assembly.GetExecutingAssembly(), "0.exe", "dest.exe");
-没有成功-找不到文件异常.
- without success - File not found exception.
public static void ExtractEmbeddedBinaryFile(Assembly assembly, string resourceName, string targetFile)
{
FileInfo assemblyFileInfo = new FileInfo(assembly.Location);
// delete local copy of existing binary file if it is older than assembly
if (File.Exists(targetFile))
{
if (new FileInfo(targetFile).CreationTime < assemblyFileInfo.LastWriteTime)
File.Delete(targetFile);
}
// extract local copy of binary file from assembly
if (!File.Exists(targetFile))
{
Stream streamIn = assembly.GetManifestResourceStream(resourceName);
if (streamIn == null)
{
throw new Exception("Embedded resource ''" + resourceName + "'' not found in ''" + assembly.Location + "''.");
}
Stream streamOut = File.Create(targetFile);
BinaryReader br = new BinaryReader(streamIn);
BinaryWriter bw = new BinaryWriter(streamOut);
if (streamIn.Length > int.MaxValue)
{
throw new Exception("Embedded resource ''" + resourceName + "'' in ''" + assembly.Location + "'' is too large.");
}
bw.Write(br.ReadBytes((int)streamIn.Length));
bw.Flush();
bw.Close();
br.Close();
// set the creation time of the local binary file to the last modification time of the assembly for future comparison
new FileInfo(targetFile).CreationTime = assemblyFileInfo.LastWriteTime;
}
}
推荐答案
这篇关于如何从资源中保存二进制文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!