我正在开发,其中来自多个屏幕的用户必须下载一个示例文件(Excel文件)一起工作的应用程序。 什么将是这样做的最好的方式。
我在做什么是
将文件放置在应用程序执行和下载使用Application.StartupPath文件的目录。 这不听起来像一个很好的解决方案。 截至随时随地用户可以编辑文件或删除文件或这样的事情。
我想要做的是
我想从资源添加的所有文件在我的资源和下载文件。 我添加的文件,但我需要关于如何从资源下载的帮助不大。
谢谢
我正在开发,其中来自多个屏幕的用户必须下载一个示例文件(Excel文件)一起工作的应用程序。 什么将是这样做的最好的方式。
我在做什么是
将文件放置在应用程序执行和下载使用Application.StartupPath文件的目录。 这不听起来像一个很好的解决方案。 截至随时随地用户可以编辑文件或删除文件或这样的事情。
我想要做的是
我想从资源添加的所有文件在我的资源和下载文件。 我添加的文件,但我需要关于如何从资源下载的帮助不大。
谢谢
您可以使用:
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));
}
}
与流过你的资源的完整名称,即命名空间+资源文件名(evantual文件夹都将被视为命名空间部分)区分大小写。 请记住,标志项目作为嵌入的资源文件。
您可以使用Assembly.GetManifestResourceStream并保存一些文件流与它合作。 下面是一个简单的例子:
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);
}
}
请注意。 有没有办法来存储文件更改回资源。