2012-11-04 52 views
0

我有一个使用模板文件和CSV文件的应用程序。它工作得很好,因为我的计算机上有这些文件,而且我正在引用它们的路径。我想要做的唯一事情是当软件发布和安装(并且所述文件位于Resources文件夹中以便它们成为嵌入资源时),csv和模板文件将被复制到我的目录文件夹中程序会使用。最好将其复制到的路径将如下所示:“C:\ FILES”+ template.dotx。如何从C#中的资源文件夹检索.dotx和.csv文件?

现在如何从我的软件的资源文件夹中获取/检索所述文件到新文件夹中?

回答

2

你可以称之为

System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames(); 

,并检查其嵌入的资源都可以访问。然后你可以比较一下你正在通过的内容,看看你是否确实完成了你的预期。

string FileExtractTo = "C:\FILES"; 
DirectoryInfo dirInfo = new DirectoryInfo(FileExtractTo); 

if (!dirInfo.Exists()) 
    dirInfo.Create(); 

using (Stream input = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) 
using (Stream output = File.Create(FileExtractTo + "\template.dotx")) 
{ 
    CopyStream(input, output); 
} 

CopyStream方法:

public static void CopyStream(Stream input, Stream output) 
{ 
    // Insert null checking here for production 
    byte[] buffer = new byte[8192]; 

    int bytesRead; 
    while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0) 
    { 
     output.Write(buffer, 0, bytesRead); 
    } 
} 
+0

将这个骂人的字符串数组? System.Reflection.Assembly.GetExecutingAssembly()GetManifestResourceNames(); –

+0

是的,这会以字符串[]的形式返回所有的资源,然后你可以调用GetManifestResourceStream(resourceName);获取嵌入式资源的流。 –

+0

看到我编辑的答案。希望这可以帮助! –

相关问题