Java NIO-Kanäle ähneln Streams, unterscheiden sich jedoch etwas:
Sie können sowohl Daten vom Kanal lesen als auch Daten in den Kanal schreiben. Aber Lese- und Schreibströme sind normalerweise einseitig.
Kanäle können asynchron gelesen und geschrieben werden.
Die Daten im Kanal müssen zuerst aus einem Puffer gelesen oder immer aus einem Puffer geschrieben werden.
Wie oben erwähnt, werden Daten vom Kanal in den Puffer gelesen und Daten vom Puffer in den Kanal geschrieben. Wie in der folgenden Abbildung dargestellt:
Dies sind die Implementierungen der wichtigsten Kanäle in Java NIO:
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
FileChannel liest und schreibt Daten aus Dateien.
DatagramChannel kann Daten im Netzwerk über UDP lesen und schreiben.
SocketChannel kann über TCP Daten im Netzwerk lesen und schreiben.
ServerSocketChannel kann eingehende TCP-Verbindungen überwachen, genau wie ein Webserver. Für jede neue eingehende Verbindung wird ein SocketChannel erstellt.
Das Folgende ist ein Beispiel für die Verwendung von FileChannel zum Einlesen von Daten in einen Puffer:
RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw"); FileChannel inChannel = aFile.getChannel(); ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = inChannel.read(buf); while (bytesRead != -1) { System.out.println("Read " + bytesRead); buf.flip(); while(buf.hasRemaining()){ System.out.print((char) buf.get()); } buf.clear(); bytesRead = inChannel.read(buf); } aFile.close();
Achten Sie auf den Aufruf von buf.flip(), read Schreiben Sie die Daten zuerst in den Puffer, kehren Sie dann den Puffer um und lesen Sie dann die Daten aus dem Puffer. Im nächsten Abschnitt wird näher auf Buffer eingegangen.
Verwandte Artikel:
Java NIO Tutorial Serie 1: Eine kurze Einführung in Java NIO
Java NIO Tutorial Serie 3 : Grundlegende Verwendung von Buffer
Ähnliche Videos:
Illustration des JDK-Download-Prozesses – JAVA-Anfänger-Video-Tutorial
Das obige ist der detaillierte Inhalt vonTutorial 2 zur Java NIO-Serie: Java NIO-Kanäle ähneln Streams. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!