Nein, FileChannel
erweitert SelectableChannel
nicht.
Wahrscheinlich, weil nicht alle Betriebssysteme es unterstützen.
Windows tut, und theoretisch könnten Sie eine Windows-spezifische C ++ - Bibliothek schreiben und sie über JNI aufrufen, aber es ist eine Menge Arbeit, dies mit java.nio
zu integrieren.
Ich hätte lieber einen Worker-Thread, der den Inhalt der Datei in ein kopiert Pipe und führe nicht blockierende Lesevorgänge am anderen Ende der Pipe durch.
Meine ursprüngliche Antwort ist nun falsch, seit AsynchronousFileChannel
in Java 7.
Sie können noch immer nicht auswählen > in einer Datei, aber es gibt jetzt zwei asynchrone Datei-Lese-Methoden: eine, die eine Rückruf und andere , die ein %Co_de% .
Es kann sauberer sein, die Callback-Methode zu verwenden (und ein Ereignis aus dem Callback zu senden), als dass ein dedizierter Thread eine Pipe abfragt.