In einem Java-Programm, ich bin ein java.nio.Path
Objekt gegeben und ich brauche eine Datei zu sperren, und dann daraus ein java.util.Properties
Objekt zu laden.Wie kann ich in Java mithilfe der java.nio-Bibliothek und eines FileChannel ein Properties-Objekt aus einer Datei laden?
ich gelesen, dass der richtige Weg, eine gemeinsame Sperre für eine Datei, als Path
dargestellt zu bekommen, ein java.nio.channels.FileChannel
sperren sie mit einer gemeinsamen Sperre channel.lock(0L, Long.MAX_VALUE, true)
final FileChannel channel = FileChannel.open(filePath, StandardOpenOption.READ);
final FileLock lock = channel.lock(0L, Long.MAX_VALUE, true);
Jetzt zu bekommen, ist, dass ich den Kanal gesperrt haben Ich nehme an, dass ich jetzt auf diesen Kanal verweisen sollte, wenn ich meine Eigenschaftendatei lade.
Allerdings sehe ich keine einfache Möglichkeit, eine FileChannel
in etwas zu übersetzen, das von Properties
gelesen werden kann. Properties
dauert eine InputStream
oder eine Reader
. Ich könnte meinen eigenen Leser implementieren, aber ich bin mir sicher, dass mein Team lieber etwas Out-of-the-Box verwenden würde, falls verfügbar.
Kennt jemand so etwas?
Sind meine zugrunde liegenden Annahmen als falsch? Wenn ja, was ist der richtige Ablauf für dieses Verfahren?
Was mit all ist die Verriegelung und 'FileChannel' Komplikation? Das Lesen der regulären Eigenschaft ist wirklich einfach. – Kayaman
Ich erwarte, dass externe Prozesse in diese Datei schreiben. Ich möchte nicht versuchen, die Eigenschaften gleichzeitig zu laden, während ein anderer Prozess sie ändert. – ds390s
Scheint wie dateibasierte Kommunikation eine schlechte Passform sein könnte. – Kayaman