我正在開發一個應用程序,其中從幾個屏幕用戶必須下載示例文件(excel)才能使用。什麼是最好的方式來做到這一點。從c#.net的資源庫下載文件
我在做什麼是
配售文件在執行應用程序和下載使用Application.StartupPath文件的目錄。這聽起來不是一個很好的解決方案。在任何時候用戶都可以編輯文件或刪除文件或其他東西。
我想要做什麼是
我想從資源添加的所有文件在我的資源和下載文件。我添加了這些文件,但我需要一些關於如何從資源中下載它的幫助。
感謝
我正在開發一個應用程序,其中從幾個屏幕用戶必須下載示例文件(excel)才能使用。什麼是最好的方式來做到這一點。從c#.net的資源庫下載文件
我在做什麼是
配售文件在執行應用程序和下載使用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文件夾都將被視爲命名空間部分)區分大小寫。請記住在項目中將文件標記爲嵌入資源。
謝謝你,請你更新你的代碼,創建ResourceManager的管理器以使用GetStream方法,它也會幫助其他用戶。謝謝 –
@MSingh我更新了答案 –
您可以使用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);
}
}
請注意。沒有辦法將文件更改存儲回資源。
重複的問題,答案在這裏: http://stackoverflow.com/questions/864140/write-file-from-assembly-resource-stream-to-disk – 2012-05-09 14:01:58