IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Lecture Fichier (url) par partie


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Points : 205
    Points
    205
    Par défaut Lecture Fichier (url) par partie
    Bonjour, Je veux télécharger des "parties" de fichiers qui se trouvent sur Internet par Java. Le problème c'est que je dois lire le fichier en une fois ou utiliser la méthode skip(long n) d'un InputStream, mais cette méthode est trop lente, étant donné qu'elle lit les bytes jusqu'a arriver au byte n. Il faudrai une méthode seek(int i) comme dans RandomAccessFile mais pour les fichiers sur Internet.

    Pouvez-vous m'aider? Merci ;-)

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Cela dépend du protocole de communication.


    Si tu utilises HTTP il faut utiliser l'header "Range" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		URL url = ...
    		URLConnection con = url.openConnection();
     
    		con.addRequestProperty("Range", "bytes=0-499");
    		InputStream in = con.getInputStream();
    		try {
    			// ...
    		} finally {
    			in.close();
    		}
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "bytes=0-499" // télécharge les 500 premiers octets (le premier index est à 0)
    "bytes=-500"  // télécharge les 500 derniers octets
    "bytes=500-"  // télécharge du 501ème octets jusqu'à la fin

    Mais ATTENTION, il s'agit d'une fonctionnalité optionnelle pour les serveurs HTTP, et de plus elle ne peut pas être utilisé avec tous les types de fichiers (par exemple avec du contenu dynamique).

    Il faut donc vérifier les headers renvoyés par le serveur, en particulier la présence de Content-Range qui indique si cela a bien été pris en compte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String contentRange = con.getHeaderField("Content-Range");
    Si c'est géré par le serveur pour ce type de fichier, cela retournera une chaine du style "bytes 0-499/taille_totale", sinon cela signifie que le range n'est pas pris en compte...



    a++

  3. #3
    Membre actif Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Points : 205
    Points
    205
    Par défaut
    Merci, je vais essayer ça tout de suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lecture fichier ligne par ligne
    Par eldorado dans le forum Débuter
    Réponses: 2
    Dernier message: 28/02/2008, 12h47
  2. Lecture fichier .csv par colonne
    Par BRAUKRIS dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2007, 14h08
  3. lecture fichiers délimitées par ;
    Par Wassim123 dans le forum C++
    Réponses: 5
    Dernier message: 13/09/2007, 06h32
  4. Lecture des URL par les servlet
    Par axel119 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/09/2007, 19h20
  5. [debutant]lecture fichier ligne par ligne
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 19h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo