0
votes

Quel est le chemin recommandé pour enregistrer des fichiers générés automatiquement?

Je construis actuellement une application WinForms et je dois créer un fichier bin dans lequel je serai sérialiser les données. Je laisse l'utilisateur choisir dans lequel le dossier qu'il souhaite que le fichier soit enregistré, mais s'il ne choisisse rien, je souhaite enregistrer le fichier dans un chemin par défaut.

La chose est, je ne suis pas si familière avec le système de fichiers Windows et je ne suis pas en mesure de trouver un bon dossier pour enregistrer le fichier.

Mes exigences de ce dossier sont:

  • Tous les ordinateurs Windows devraient l'avoir

  • Le chemin d'accès à ce dossier Tous l'ordinateur Windows est le même

  • est utilisé pour les fichiers auto-générés par des programmes en tant que "Par défaut international"

  • non utilisé fréquemment par l'utilisateur (un dossier "Touchez simplement")

    Quelle est la solution commune pour de telles choses?


0 commentaires

3 Réponses :


-1
votes

C'est appdata et vous pouvez l'obtenir avec Environnement.GetFolderPath: (L'environnement est dans l'espace de noms System.IO)

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


4 commentaires

Est-ce que c: \ utilisateurs \ Quelqu'unAname \ appdata \ itinérance \ SOMAPPName existe ou devrais-je le créer?


Et quel "SOMAPPName" signifie? Est-ce mon nom de l'application ?


Le programme va-t-il être utilisé par plusieurs utilisateurs sur le même PC? Il y a un dossier (normalement caché) appelé programdata. Ces dossiers sont utilisés pour stocker des données d'application plutôt que pour les données d'utilisateur. Selon la manière dont vous avez l'intention d'utiliser l'application, cela pourrait être approprié. Regardez ici: - Docs. microsoft.com/en-us/dotnet/api/...


Vous devriez le créer, et oui, un nom de SOMEAPP est votre nom d'application.



-1
votes

Vous pouvez utiliser system.reflet code> pour identifier un chemin dans le dossier de débogage ou de publication de votre assemblage:

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


0 commentaires

0
votes

vous CAS Utilisez un dossier ProgramData commun dédié:

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 commentaires