2012-05-12 15 views
17

Ich entwickle ein kleines C# Winforms Spiel und eines der Dinge, die ich tun möchte, ist das Speichern anwendungsspezifischer Daten. Allerdings habe ich ein wenig zu kämpfen, um den richtigen Ort zu verstehen, der gespeichert werden sollte.Wo kann ich meine anwendungsspezifischen Daten speichern?

Soweit ich speichern und entsprechend verschiedenen Orten könnte eine Anwendung verschiedene Arten von Daten gibt es sehen können dafür gehalten werden:

1. Anwendungseigenschaften - Einstellungen wie, wo die Anwendung speichert es Daten, wer der zuletzt eingeloggte Benutzer war, die Standardfenstergröße, Position usw. Sollen diese Informationen in App.Settings oder vielleicht in die Registry gehen?

2. Globale Anwendungsdaten - Dies könnte Sprites und andere Spiel Vermögenswerte enthalten, die von jedem Benutzer verwendet werden, die auf dieser Maschine die Anwendung ausgeführt wird. Wo würden diese gemeinsamen Daten gespeichert? Es ist erwähnenswert, dass diese Daten in meinem speziellen Fall nicht mit einer Standardinstallation versehen werden und Benutzer ihre eigenen Spielinhalte hinzufügen können, die dann für jeden anderen Benutzer auf demselben Computer verfügbar sein sollen.

3. Benutzerspezifische Anwendungsdaten - Dies würde eine Benutzer gespeicherten Spieldateien, ihre spezifischen Anwendungspräferenzen und ihre Profilinformationen enthalten. Wo soll ich das aufbewahren?

Idealerweise möchte ich, dass meine Anwendung mit Windows XP, Vista, 7 und natürlich dem kommenden Windows 8 kompatibel ist - ich weiß nicht, ob dies die Methoden ändert, aber hoffentlich hilft es bei der Bereitstellung von Ratschlägen.

Dies ist mein erster Ausflug in diese Art von Entwicklung und ich würde mich über einige 'Best Practice' Ratschläge freuen.

Antwort

13

Frage 2:
Ich schlage vor, einen Unterordner in Environment.SpecialFolder.CommonAppData (Karten zu C:\ProgramData auf Windows7 Standardeinstellung) verwenden. Dies ist ein versteckter Ordner.

Frage 3:
Setzen Sie diese Dateien in Environment.SpecialFolder.AppData (Karten zu C:\Users\[USERNAME]\AppData\Roaming standardmäßig versteckten Ordner), wenn Sie, dass der Benutzer nicht erwartet, zu sichern will/ändern diese. Einige Spiele legen auch ihre gespeicherten Spiele in Environment.SpecialFolder.MyDocuments, wahrscheinlich weil es einfacher für Benutzer ist, sie dort zu finden.

Beispielcode:

var directory = Environment.GetFolderPath(Environment.SpecialFolder.AppData); 


using (FileStream fs = File.Create(Path.Combine(directory, "myAppDirectory", "myFile.txt")) 
{ 
    // write data    
} 

Für eine complete list of special folders on Windows folgen Sie dem Link

Randnoten

+0

Einige gute Tipps. Ich habe meine Frage bearbeitet, um anzuzeigen, dass die Dateien in Frage 2 tatsächlich dynamisch sind. – Martin

+0

@Martin Ich habe meine Antwort aktualisiert, nachdem ich Ihre Frage erneut gelesen habe – yas4891

+0

Danke - sehr hilfreich. – Martin

1

Warum speichern Sie nicht die Daten in ein Objekt und schreiben Sie es in eine Datei.Verwenden Sie für jeden Typ unterschiedliche Dateien.

+1

Das ist genau das, was ich tue - ich muss nur den besten physischen Speicherort auf der Festplatte kennen, um sie zu speichern. – Martin

Verwandte Themen