从c#.net中的资源库下载文件
我正在开发一个应用程序,用户必须从几个屏幕下载一个示例文件(excel)才能使用。这样做的最佳方式是什么 我正在做的是 将文件放置在应用程序正在执行的目录中,并使用application.StartupPath下载文件。这听起来不是一个很好的解决方案。用户可以随时编辑文件或删除文件等 我想做的是 我想在我的资源中添加所有文件,并从资源中下载文件。我添加了这些文件,但是我需要一些关于如何从参考资料下载的帮助 谢谢您可以使用流并将其保存在某个文件中以使用它。 下面是一个简单的例子:从c#.net中的资源库下载文件,c#,.net,stream,filestream,C#,.net,Stream,Filestream,我正在开发一个应用程序,用户必须从几个屏幕下载一个示例文件(excel)才能使用。这样做的最佳方式是什么 我正在做的是 将文件放置在应用程序正在执行的目录中,并使用application.StartupPath下载文件。这听起来不是一个很好的解决方案。用户可以随时编辑文件或删除文件等 我想做的是 我想在我的资源中添加所有文件,并从资源中下载文件。我添加了这些文件,但是我需要一些关于如何从参考资料下载的帮助 谢谢您可以使用流并将其保存在某个文件中以使用它。 下面是一个简单的例子: using (v
using (var resource = Assembly.GetManifestResourceStream("resource_key"))
using (var file = File.OpenWrite(filename))
{
var buffer = new byte[1024];
int len;
while ((len = resource.Read(buffer, 0, buffer.Length)) > 0)
{
file.Write(buffer, 0, len);
}
}
请注意。无法将文件更改存储回资源。您可以使用:
class ResourceHelper
{
public static void MakeFileOutOfAStream(string stream, string filePath)
{
using(var fs = new FileStream(filePath,FileMode.Create,FileAccess.ReadWrite))
{
CopyStream(GetStream(stream), fs);
}
}
static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[32768];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, read);
}
}
static Stream GetStream(string stream)
{
return Assembly.GetExecutingAssembly().GetManifestResourceStream(stream));
}
}
使用streampass传递资源的全名,即名称空间+资源文件名(实际文件夹被视为名称空间的一部分)区分大小写。请记住将项目中的文件标记为嵌入式资源重复问题,在此处回答:谢谢,请更新您的代码并创建ResourceManager的管理器以使用GetStream方法,它也将帮助其他用户。谢谢