在WPF应用程序中本地存储数据文件的文件夹

时间:2012-03-11 21:37:36

标签: c# directory

我目前在我的WPF应用程序中有以下代码,它完全符合我的要求,但是,在发布它时,它不一定能够访问这些文件夹位置,因为它们不会指向正确的目录也不存在文件夹。

我希望有人能告诉我将某些东西保存到本地文件夹的最佳方法是什么?

它是否在应用程序文件夹本身内也没有问题。

我目前用于编写文件的代码:

using (Stream stream = File.Open(@"..\..\Templates\data.bin", FileMode.Create))
            {
                BinaryFormatter bin = new BinaryFormatter();
                bin.Serialize(stream, templateList);
            }

我目前用于加载文件的代码:

using (Stream stream = File.Open(@"..\..\Templates\data.bin", FileMode.Open))
        {
            BinaryFormatter bin = new BinaryFormatter();

            templateList = (List<Template>)bin.Deserialize(stream);
        }

2 个答案:

答案 0 :(得分:15)

您可以使用Environment.SpecialFolder查找放置文件的适当位置(例如,ApplicationData将是一个很好的起点)。如果您只需要临时文件,则可以使用Path.GetTempFileName创建一个。

编辑:最后一点。将东西存储在应用程序文件夹本身可能是一个巨大的痛苦。通常,应用程序文件夹是在安装期间使用管理员帐户创建的,因此您的应用程序在用户帐户上运行时将无法写入该文件夹。

答案 1 :(得分:10)

您可以使用System.Environment.SpecialFolder.LocalApplicationData存储特定于应用程序的数据:

using System;

class Sample 
{
    public static void Main() 
    {
          Console.WriteLine("GetFolderPath: {0}", 
                 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
    }
}

参考:http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx