Каков рекомендуемый путь для сохранения автоматически сгенерированных файлов? - PullRequest
2 голосов
/ 20 сентября 2019

В настоящее время я создаю приложение WinForms, и мне нужно создать файл bin, в котором я буду сериализовать данные.Я позволяю пользователю выбирать, в какую папку он хочет сохранить файл, но если он ничего не выбирает, я хочу сохранить файл по умолчанию.

Дело в том, что я не такойзнаком с файловой системой Windows, и я не могу найти подходящую папку для сохранения файла.

Мои требования к такой папке:

  • Все компьютеры Windowsдолжно иметь его

  • Путь к этой папке на всех компьютерах Windows одинаков

  • Используется для автоматически сгенерированных файлов программ как "международный стандарт "

  • Не часто используется пользователем (папка" просто не трогай ")

для чего обычно используетсятакие вещи?

Ответы [ 3 ]

0 голосов
/ 20 сентября 2019

Вы можете использовать System.Reflection, чтобы определить путь в папке отладки или выпуска вашей сборки:

public static string Path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "someapp");
0 голосов
/ 22 сентября 2019

Вы можете использовать выделенную общую папку 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);
  }
}
0 голосов
/ 20 сентября 2019

Это AppData, и вы можете получить его с помощью Environment.GetFolderPath: (Environment находится в пространстве имен System.IO)

string binPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SomeAppName");
// this will return something like this:
// C:\Users\SomeUserName\AppData\Roaming\SomeAppName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...