Maison  >  Article  >  Java  >  Comment transférer efficacement des fichiers via des sockets en Java ?

Comment transférer efficacement des fichiers via des sockets en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 05:52:29999parcourir

How to Efficiently Transfer Files over Sockets in Java?

Transfert de fichiers sur sockets en Java

Le transfert de fichiers entre sockets nécessite de transformer les fichiers en tableaux d'octets, de les transmettre et de les reconstituer à la réception fin. Ce guide aborde les complexités rencontrées dans ce processus.

Logique de réception côté serveur

Le serveur établit un écouteur de socket, accepte les connexions entrantes et initialise les flux de données pour la communication. . L'étape critique consiste à lire les octets reçus et à les enregistrer dans un fichier local :

<code class="java">byte[] bytes = new byte[1024];
in.read(bytes);
FileOutputStream fos = new FileOutputStream("C:\test2.xml");
fos.write(bytes);</code>

La méthode in.read(bytes) récupère les données entrantes, tandis que fos.write(bytes) les écrit dans le fichier local. fichier.

Logique d'envoi côté client

Côté client, le fichier est lu dans un tableau d'octets et les données sont ensuite envoyées via le socket :

<code class="java">File file = new File("C:\test.xml");
long length = file.length();
byte[] bytes = new byte[(int) length];
// ...
out.write(bytes);</code>

La méthode out.write(bytes) envoie les octets du fichier converti au serveur.

Amélioration de la copie de flux

Cependant, en utilisant read et écrire directement des méthodes peut être inefficace. Au lieu de cela, InputStream et OutputStream fournissent la méthode transferTo pour un transfert de données plus rapide :

<code class="java">int count;
byte[] buffer = new byte[8192];
while ((count = in.read(buffer)) > 0) {
  out.write(buffer, 0, count);
}</code>

Cette technique automatise le processus de copie d'octets et améliore considérablement les performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn