建议在其中保存自动生成的文件的路径是什么?

时间:2019-09-20 05:34:43

标签: windows winforms file save default

我当前正在构建WinForms应用程序,我需要创建一个bin文件 我将在其中序列化数据。我让用户选择要将文件保存在哪个文件夹中,但是如果他不选择任何内容,我希望将文件保存在默认路径中。

问题是,我对Windows的文件系统不太熟悉,无法找到一个好的文件夹来保存文件。

我对此类文件夹的要求是:

  • 所有Windows计算机都应该拥有它

  • 所有Windows计算机的此文件夹的路径都相同

  • 用于程序的自动生成的文件,作为“国际默认值”

  • 用户不经常使用(“请勿触摸”文件夹)

这类事情的常见解决方案是什么?

3 个答案:

答案 0 :(得分:0)

您可以使用专用的通用ProgramData文件夹:

string CommonAppDataFolderPath 
  = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
  + Path.DirectorySeparatorChar
  + AssemblyCompany
  + Path.DirectorySeparatorChar
  + AssemblyTitle
  + Path.DirectorySeparatorChar;

public string AssemblyCompany
{
  get
  {
    object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
    if ( attributes.Length == 0 )
    {
      return "";
    }
    return ((AssemblyCompanyAttribute)attributes[0]).Company;
  }
}

public string AssemblyTitle
{
  get
  {
    object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
    if ( attributes.Length > 0 )
    {
      AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
      if ( titleAttribute.Title != "" )
      {
        return titleAttribute.Title;
      }
    }
    return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
  }
}

答案 1 :(得分:-1)

它是AppData,您可以通过Environment.GetFolderPath获取它: (环境位于System.IO命名空间中)

string binPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SomeAppName");
// this will return something like this:
// C:\Users\SomeUserName\AppData\Roaming\SomeAppName

答案 2 :(得分:-1)

您可以使用System.Reflection来标识程序集的debug或release文件夹中的路径:

public static string Path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "someapp");