Ich baue eine Java-Desktop-Anwendung und muss einige Daten speichern, also habe ich mich entschieden, SQLite-Datenbank zu erstellen, aber ich weiß nicht, wo ich es speichern soll. Ich möchte eine plattformübergreifende Lösung verwenden, die es mir ermöglicht, sie in AppData \ MyApplicationDirectory in Windows und in einem versteckten Verzeichnis im Home-Verzeichnis unter Linux zu speichern (ich nehme an, es sollte dort sein, oder?). Gibt es eine Möglichkeit, das zu tun?Datenspeicher in der JavaFX-Desktop-Anwendung
0
A
Antwort
0
Ich glaube nicht, dass es ein plattformübergreifendes Äquivalent des AppData-Verzeichnisses gibt, das auf (einigen Versionen von) Windows existiert.
Was ich in der Regel in ähnlichen Situationen zu tun ist, wie Sie für Linux beschreiben (und ähnlichen): ein verstecktes Verzeichnis im Home-Verzeichnis des Benutzers erstellen:
String userHome = System.getProperty("user.home");
Path applicationDir = Paths.get(userHome, ".myApplication");
Files.createDirectories(applicationDir);
Path databaseFile = applicationDir.resolve("database.sqlite");
// etc...
+0
So entfernen Sie eine solche Datei? Ich meine, wenn Benutzer die Software deinstalliert, möchte ich, dass der Speicher gelöscht werden soll. – Gem
Haben Sie die [Einstellungen API] ausgecheckt (https: //docs.oracle.com/javase/7/docs/api/java/util/prefs/Preferences.html)? –
Ich dachte immer, es wird verwendet, um Einstellungen (Schlüssel-Wert-Paare) nicht eine Datenbank-Datei zu speichern, aber ich werde es auschecken. – blaballong
Das dachte ich mir auch. Aber ein Absatz von der oben verlinkten Seite sagt folgendes: "Ein Knoten in einer hierarchischen Sammlung von Präferenzdaten. Diese Klasse ermöglicht es Anwendungen, Benutzer- und Systempräferenz- und Konfigurationsdaten zu speichern und abzurufen. Diese Daten werden dauerhaft in einer implementierungsabhängigen Sicherung gespeichert Typische Implementierungen umfassen flache Dateien, betriebssystemspezifische Registrierungen, Verzeichnisserver und SQL-Datenbanken. Der Benutzer dieser Klasse muss sich nicht mit Details des Sicherungsspeichers befassen. " So kann es offensichtlich verwendet werden, um SQL-Datenbanken zu speichern. –