Heim> Java> javaLernprogramm> Hauptteil

Erläuterung der Datenübertragungsmethoden zwischen Kanälen in JAVA

巴扎黑
Freigeben: 2017-06-26 09:21:01
Original
1434 Leute haben es durchsucht

Wenn in Java NIO einer der beiden Kanäle ein FileChannel ist, können Sie Daten direkt von einem Kanal (Anmerkung des Übersetzers: Kanal wird auf Chinesisch oft als Kanal übersetzt) auf einen anderen Kanal übertragen.

transferFrom(): passiver Empfang

Die transferFrom()-Methode von FileChannel kann Daten vom Quellkanal an FileChannel übertragen (Anmerkung des Übersetzers: Diese Methode ist in der JDK-Dokumentation enthalten wird als Übertragung von Bytes von einem bestimmten lesbaren Byte-Kanal in eine Datei auf diesem Kanal interpretiert. Der Eingabeparameter position der Methode

gibt an, ab welcher Position Daten in die Zieldatei geschrieben werden sollen, und count gibt die maximale Anzahl der übertragenen Bytes an. Wenn der Quellkanal über weniger als 50 Bytes verbleibenden Speicherplatz verfügt, ist die Anzahl der übertragenen Bytes geringer als die Anzahl der angeforderten Bytes.
Beachten Sie außerdem, dassSocketChannel bei der Implementierung von SoketChannel nur die zu diesem Zeitpunkt vorbereiteten Datenüberträgt (die möglicherweise weniger als die Anzahl der Bytes betragen). Daher überträgt der SocketChannel möglicherweise nicht alle angeforderten Daten (Anzahl der Bytes) in den FileChannel.

transferTo(): Senden Sie aktiv die Methode

transferTo(), um Daten von FileChannel an andere Kanäle zu übertragen. Das Folgende ist ein einfaches Beispiel:

Abgesehen davon, dass das FileChannel-Objekt, das die Methode aufruft, anders ist, ist alles andere gleich.
Die oben genannten Probleme zu SocketChannel bestehen auch bei der Methode transferTo().SocketChannel überträgt weiterhin Daten, bis der Zielpuffer gefüllt ist.

Beispiel:

@Testpublic void test2() { RandomAccessFile fromFile = new RandomAccessFile("fromFile.txt", "rw"); FileChannel fromChannel = fromFile.getChannel(); RandomAccessFile toFile = new RandomAccessFile("toFile.txt", "rw"); FileChannel toChannel = toFile.getChannel();long position = 0;long count = fromChannel.size();//从from 读到 本通道;注意socketfrom只会发送已经准备好的,不会发送count个 toChannel.transferFrom(fromChannel,position, count);//将本通道 写到 to;注意sockedfrom会一直发送,直到to被填满 fromChannel.transferTo(position, count, toChannel); }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonErläuterung der Datenübertragungsmethoden zwischen Kanälen in JAVA. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!