FAQ Fichiers, flux et réseauxConsultez toutes les FAQ

Nombre d'auteurs : 15, nombre de questions : 95, dernière mise à jour : 21 mars 2016  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum Java de http://java.developpez.com ainsi que l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.


SommaireInformations (6)
sommaire suivant
 

Le but : cette FAQ a été conçue pour être la plus simple possible d'utilisation. Elle tente d'apporter des réponses simples et complètes aux questions auxquelles sont confrontés tous les débutants (et les autres).

L'organisation : les questions sont organisées par thème, les thèmes pouvant eux-mêmes contenir des sous-thèmes. Lorsqu'une question porte sur plusieurs thèmes, celle-ci est insérée dans chacun des thèmes rendant la recherche plus facile.

Les réponses : les réponses contiennent des explications et des codes source. Certaines sont complétées de fichiers à télécharger contenant un programme de démonstration. Ces programmes sont volontairement très simples afin qu'il soit aisé de localiser le code intéressant. Les réponses peuvent également être complétées de liens vers d'autres réponses, vers la documentation en ligne d'Oracle ou vers un autre site en rapport.

Nouveautés et mises à jour : lors de l'ajout ou de la modification d'une question/réponse, un indicateur est placé à côté du titre de la question. Cet indicateur reste visible pour une durée de 15 jours afin de vous permettre de voir rapidement les modifications apportées.

J'espère que cette FAQ pourra répondre à vos questions. N'hésitez pas à nous faire part de tous commentaires/remarques/critiques.

Mis à jour le 26 octobre 2015 La rédaction Java

Cette FAQ est ouverte à toute collaboration. Pour éviter la multiplication des versions, il serait préférable que toute collaboration soit transmise aux administrateurs de la FAQ.

Plusieurs compétences sont actuellement recherchées pour améliorer cette FAQ :

  • rédacteur : bien évidemment, toute nouvelle question/réponse est la bienvenue ;
  • Web designer : toute personne capable de faire une meilleure mise en page, une feuille de style ou de belles images... ;
  • correcteur : malgré nos efforts, des fautes d'orthographe ou de grammaire peuvent subsister. Merci de contacter les administrateurs si vous en débusquez une... Idem pour les liens erronés.

Mis à jour le 21 mars 2015 La rédaction Java

Les codes source présentés sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Pour le reste, ce document constitue une œuvre intellectuelle protégée par les droits d'auteurs.

Copyright © 2017 Developpez LLC : Tous droits réservés Developpez LLC. Aucune reproduction ne peut en être faite sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 € de dommages et intérêts. Cette page est déposée à la SACD.

Mis à jour le 21 mars 2016 La rédaction Java

Il existe plusieurs API pour gérer l'accès aux fichiers, flux et réseaux Java suivant vos besoins (lire ou écrire des données, gérer des fichiers, accéder au réseau). Nous allons vous présenter ici les plus couramment utilisées.

Attention : il ne faut pas confondre les flux d’entrée/sortie (I/O streams) que nous verrons ici avec les flux de données (data streams ou streams) introduits dans le JDK8.

API Java classique
Cette API introduite dans le JDK 1.0 et développée dans les versions suivantes est l'API Java classique permettant de manipuler des fichiers et des flux, on la trouve donc sur toutes les plateformes Java. Elle se compose de quatre parties distinctes :

  • la gestion des fichiers via la classe java.io.File ;
  • la gestion des flux d’entrée/sortie avec des classes du paquetage java.io telles que InputStream, OutputStream, et leurs classes filles ainsi que RandomAccessFile. Le JDK 1.1 a rajouté les classes Writer, Reader et leurs classes filles pour permettre une manipulation plus aisée des flux contenant des caractères ;
  • la gestion des réseaux TCP/IP et UDP/IP ou ainsi que du protocole HTTP avec les classes du paquetage java.net, par exemple : la classe Stocket, InetAddress, URL ou encore HttpURLConnection ;
  • la gestion des archives au format zip et gzip introduite dans le JDK 1.1 avec le paquetage java.util.zip et des archives au format jar introduites dans le JDK 1.2 avec le paquetage java.util.jar.


NIO
Cette nouvelle API nommée NIO pour « Non-blocking I/O » (« Entrées/Sorties non bloquantes ») mais souvent appelée « New I/O » (« Nouvelles Entrées/Sorties ») a été introduite dans le JDK 1.4. Les classes du paquetage java.nio, java.nio.channels et java.nio.charset permettent d'utiliser des tampons mémoire qui peuvent être utilisés pour mapper des fichiers et effectuer des opérations non bloquantes. Des méthodes pont ont été ajoutées pour permettre d'utiliser cette API en conjonction avec l'API classique et il est tout à fait normal d'utiliser ces deux API en même temps. Cependant, NIO permet de traiter plus facilement des opérations asynchrones et des fichiers de très grande taille ; ce que ne permet pas de faire l'API classique.

NIO2
Cette nouvelle API a été introduite dans le JDK 1.7 en tant qu'extension de NIO. Elle y ajoute le package java.nio.file qui offre de nouveaux paradigmes définissant la manière d’interagir avec les fichiers du système et une meilleure gestion de droits d’accès. Des méthodes pont ont été ajoutées pour permettre d'utiliser cette API en conjonction avec l'API classique et il est tout à fait normal d'utiliser ces deux API en même temps. Cependant, NIO2 permet une gestion plus fine du système de fichiers et de ses spécificités (droits d’accès, liens symboliques, etc.) ; ce que ne permet pas de faire l'API classique.

Bibliothèques tierces
  • JavaMail - cette API faisant partie des extensions Java permet d'envoyer des méls avec les protocoles SMTP, POP3 et IMAP ;
  • Plusieurs projets Apaches ont vu le jour pour pallier des manques ou des défauts de l'API Java existante :
    • Apache commons-io - des classes utilitaires de gestion de fichiers ;
    • Apache commons-net - des classes utilitaires permettant de manipuler plusieurs protocoles réseau tels que le protocole FTP, etc. ;
    • Apache commons-compress - permet la gestion des archives tar, zip, bzip2 et de plusieurs autres formats ;
    • Apache commons-email - des classes utilitaires d'envoyer du courrier ;
    • Apache HttpComponents - des classes utilitaires permettant de manipuler le protocole HTTP ;
  • jCIFS - cette bibliothèque permet d’interagir avec les ressources Microsoft Windows partagées sur le réseau utilisant le protocole CIFS/SMB.

Mis à jour le 11 août 2015 bouye

Un grand merci à tous ceux qui ont pris de leur temps pour la réalisation de cette FAQ.

  • Aux rédacteurs : remerciements tout d'abord à tous ceux qui ont rédigé les questions et les réponses.
  • Aux correcteurs : remerciements également aux personnes qui ont relu les textes pour supprimer un maximum de fautes de français.
  • Aux visiteurs : remerciements enfin à tous ceux qui ont consulté cette FAQ, et qui, par leurs remarques, nous ont aidés à la perfectionner.
  • Et pour finir, un merci tout spécial à zoom61 qui a créé notre logo.

Mis à jour le 21 mars 2015 La rédaction Java

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -