Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1276 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Récupérer un fichier sur un site et l'enregistrer localement ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Récupérer un fichier sur un site et l'enregistrer localement ?

n°732271
max2048
Begin The Begin
Posté le 19-05-2004 à 23:18:45  profilanswer
 

Bonsoir,
 
J'aimerais savoir comment je peux enregistrer un fichier distant (dont je possède l'url, par exemple : http://www.toto.com/truc.mp3) sur mon PC.
 
Je me perds dans toutes les classes StreamReader, FileWriter, FileInputStream, etc...
 
Merci :)


---------------
Un site web qu'il est beau (v2.0)
mood
Publicité
Posté le 19-05-2004 à 23:18:45  profilanswer
 

n°732470
seabee
Posté le 20-05-2004 à 02:03:59  profilanswer
 

Code :
  1. try {
  2.   FileInputStream fis = new FileInputStream("http://www.toto.com/truc.mp3" );
  3.   FileOutputStream fos = new FileOutputStream ("c:/myFile.mp3" );
  4.   int size = fis.available();
  5.   byte[] tab = new byte[size];
  6.   fis.read(tab);
  7.   fos.write(tab);
  8.   } catch (IOException e) {
  9.     e.printStackTrace();
  10.     System.out.println("Le piratage de mp3, c'est mal" );
  11.   }
  12. }



Message édité par seabee le 20-05-2004 à 02:12:12
n°732669
max2048
Begin The Begin
Posté le 20-05-2004 à 12:48:57  profilanswer
 


 
Merci mais justement ça ne fonctionne pas pour un fichier distant.
Si je remplace "http://www.toto.com/truc.mp3" par "c:\\tatayoyo.mp3", là oui, ça marche.


Message édité par max2048 le 20-05-2004 à 12:50:12

---------------
Un site web qu'il est beau (v2.0)
n°732703
seabee
Posté le 20-05-2004 à 13:28:15  profilanswer
 

max2048 a écrit :

Merci mais justement ça ne fonctionne pas pour un fichier distant.
Si je remplace "http://www.toto.com/truc.mp3" par "c:\\tatayoyo.mp3", là oui, ça marche.


 
Passe par une URI.

n°732762
max2048
Begin The Begin
Posté le 20-05-2004 à 14:57:26  profilanswer
 

Comment ça ?


---------------
Un site web qu'il est beau (v2.0)
n°732771
seabee
Posté le 20-05-2004 à 15:08:31  profilanswer
 

Chais pas.. Essaie ça:
 

Seabee a écrit :

Code :
  1. try {
  2.   String path = "http://www.toto.com/truc.mp3";
  3.   FileInputStream fis = new FileInputStream(new File(new URI(path)));
  4.   FileOutputStream fos = new FileOutputStream ("c:/myFile.mp3" );
  5.   int size = fis.available();
  6.   byte[] tab = new byte[size];
  7.   fis.read(tab);
  8.   fos.write(tab);
  9.   } catch (IOException e) {
  10.     e.printStackTrace();
  11.     System.out.println("Le piratage de mp3, c'est mal" );
  12.   }
  13. }



n°732780
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 15:44:18  profilanswer
 

Euh oui mais non :

Citation :


public File(URI uri)
 
    Creates a new File instance by converting the given file: URI into an abstract pathname.
[...]
Parameters:
    uri - An absolute, hierarchical URI with a scheme equal to "file" [...]


Donc http passera pas [:spamafote]
 
Pour moi faut passer par l'ouverture d'une HttpUrlConnection et récupérer le résultat d'un GET en utilisant getInputStream() :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732785
seabee
Posté le 20-05-2004 à 15:48:45  profilanswer
 

Taiche a écrit :

Euh oui mais non :

Citation :


public File(URI uri)
 
    Creates a new File instance by converting the given file: URI into an abstract pathname.
[...]
Parameters:
    uri - An absolute, hierarchical URI with a scheme equal to "file" [...]


Donc http passera pas [:spamafote]
 
Pour moi faut passer par l'ouverture d'une HttpUrlConnection et récupérer le résultat d'un GET en utilisant getInputStream() :o


 
 [:aha] Je trouve tout ça bien pourrave!
Mais bon, si File est pas foutu de fetcher par http, alors ben oui, faudra passer HttpUrlConnection ou un truc du genre


Message édité par seabee le 20-05-2004 à 15:48:59
n°732786
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 15:51:08  profilanswer
 

Seabee a écrit :

[:aha] Je trouve tout ça bien pourrave!
Mais bon, si File est pas foutu de fetcher par http, alors ben oui, faudra passer HttpUrlConnection ou un truc du genre


Ba c'est surtout débile de proposer un constructeur avec une URI dedans si c'est pour ne prendre que les trucs en "file://" :/


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732789
seabee
Posté le 20-05-2004 à 15:54:02  profilanswer
 

Taiche a écrit :

Ba c'est surtout débile de proposer un constructeur avec une URI dedans si c'est pour ne prendre que les trucs en "file://" :/


 
 [:2501] C'est exactement ce que je voulais dire mais j'arrive pas à m'exprimer aujourd'hui  [:aha]

mood
Publicité
Posté le 20-05-2004 à 15:54:02  profilanswer
 

n°732800
the real m​oins moins
Posté le 20-05-2004 à 16:26:19  profilanswer
 

Taiche a écrit :

Ba c'est surtout débile de proposer un constructeur avec une URI dedans si c'est pour ne prendre que les trucs en "file://" :/

ce qui est surtout débile à la base c'est de vouloir ouvrir un fichier distant avec File
ensuite, URI etant une maniere uniforme de representer une resource, ça me parait ok d'avoir un constructeur de file qui prend une URI.
(évidemment l'idéal serait d'avoir une hierarchie de classes qui ferait qu'on puisse de façon transparente ouvrir n'importe quelle resource - et en fait je pense que c'est jouable en java mais me rappelle plus comment à l'instant)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°732805
seabee
Posté le 20-05-2004 à 16:36:12  profilanswer
 

the real moins moins a écrit :

ce qui est surtout débile à la base c'est de vouloir ouvrir un fichier distant avec File
ensuite, URI etant une maniere uniforme de representer une resource, ça me parait ok d'avoir un constructeur de file qui prend une URI.
(évidemment l'idéal serait d'avoir une hierarchie de classes qui ferait qu'on puisse de façon transparente ouvrir n'importe quelle resource - et en fait je pense que c'est jouable en java mais me rappelle plus comment à l'instant)


 
File est la représentation abstraite d'un fichier : conceptuellement, il n'y a rien de choquant à ce que celui-ci soit une ressource web [:*syl*]


Message édité par seabee le 20-05-2004 à 16:36:27
n°732807
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 16:36:47  profilanswer
 

the real moins moins a écrit :

ce qui est surtout débile à la base c'est de vouloir ouvrir un fichier distant avec File


Non, je vois pas pourquoi.

the real moins moins a écrit :


ensuite, URI etant une maniere uniforme de representer une resource, ça me parait ok d'avoir un constructeur de file qui prend une URI.
(évidemment l'idéal serait d'avoir une hierarchie de classes qui ferait qu'on puisse de façon transparente ouvrir n'importe quelle resource - et en fait je pense que c'est jouable en java mais me rappelle plus comment à l'instant)


Ba c'est c'que j'dis [:spamafote] Utiliser une URI en constructeur mais limiter à file:// ça restreint horriblement et j'avoue ne pas bien saisir l'intérêt.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732808
the real m​oins moins
Posté le 20-05-2004 à 16:38:41  profilanswer
 

Seabee a écrit :

File est la représentation abstraite d'un fichier : conceptuellement, il n'y a rien de choquant à ce que celui-ci soit en une ressource web [:*syl*]

ben nan File c'est une representation abstraite d'un fichier sur le file system local http://membres.lycos.fr/gggrrrreeeggg/itm/itmb.gif
passer par URI ou URL c'est bon, mais apres vouloir passer par FileInputStream et compagnie ça l'est pas http://membres.lycos.fr/gggrrrreeeggg/itm/itmr.gif
 
(d'aiilleurs tu peux avoir l'inputstream ou l'url connection depuis URL, et ça marche probablement en local http://membres.lycos.fr/gggrrrreeeggg/itm/itmv.gif


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°732810
uriel
blood pt.2
Posté le 20-05-2004 à 16:41:52  profilanswer
 

Taiche a écrit :


Pour moi faut passer par l'ouverture d'une HttpUrlConnection et récupérer le résultat d'un GET en utilisant getInputStream() :o


 
+1 avec le dindon :O


---------------
IVG en france
n°732811
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 16:42:35  profilanswer
 

the real moins moins a écrit :

ben nan File c'est une representation abstraite d'un fichier sur le file system local  


:non: Tu peux très bien ouvrir des fichiers en réseau local s'ils sont mappés sur ta machine.
 
EDIT : ou même en utilisant des paths de type UNC sur les machines Windows :o


Message édité par Taiche le 20-05-2004 à 16:43:13

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732815
the real m​oins moins
Posté le 20-05-2004 à 16:46:45  profilanswer
 

Taiche a écrit :

:non: Tu peux très bien ouvrir des fichiers en réseau local s'ils sont mappés sur ta machine.
 
EDIT : ou même en utilisant des paths de type UNC sur les machines Windows :o

ce qui revient au meme au niveau de l'os, contrairement à une resource http


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°732828
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 17:00:48  profilanswer
 

the real moins moins a écrit :

ce qui revient au meme au niveau de l'os, contrairement à une resource http


Oui et c'est bien là le problème : c'est au développeur de faire la différence. Et dans pas mal de cas, il a pas forcément accès au type de la donnée et il doit se palucher les tests d'accès au fichier avant de pouvoir le lire.
J'trouve ça dommage [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732838
the real m​oins moins
Posté le 20-05-2004 à 17:04:26  profilanswer
 

Taiche a écrit :

Oui et c'est bien là le problème : c'est au développeur de faire la différence. Et dans pas mal de cas, il a pas forcément accès au type de la donnée et il doit se palucher les tests d'accès au fichier avant de pouvoir le lire.
J'trouve ça dommage [:spamafote]

ben non, tu passes par URL.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°732841
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 17:06:14  profilanswer
 

the real moins moins a écrit :

ben non, tu passes par URL.


:??:
Si tu veux dire "mets tout dans des URI", ba non c'est ce que je veux dire quand je dis que le dev contrôle pas forcément le type de donnée qui lui est envoyé. Un coup ça peut être un path local, un coup une URL, etc...


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732847
the real m​oins moins
Posté le 20-05-2004 à 17:10:26  profilanswer
 

new URL("file://blah/truc.txt" );
 
s'il "controle" pas le format de la chaine passée là, ben ouais forcement, je vois pas ce qui pourrait marcher par magie


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°732849
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 17:13:09  profilanswer
 

the real moins moins a écrit :

new URL("file://blah/truc.txt" );
 
s'il "controle" pas le format de la chaine passée là, ben ouais forcement, je vois pas ce qui pourrait marcher par magie


"Par magie", non, mais si le constructeur de File ne limitait pas les URI à des schémas de type file, bin ça s'rait déjà pas mal.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732851
the real m​oins moins
Posté le 20-05-2004 à 17:15:53  profilanswer
 

Taiche a écrit :

"Par magie", non, mais si le constructeur de File ne limitait pas les URI à des schémas de type file, bin ça s'rait déjà pas mal.

mais bordel.
pourquoi tu voudrais passer par un File si tu connais pas le type de resource!
tu passes par Url.openConnection/openStream .|


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°732885
benou
Posté le 20-05-2004 à 18:20:25  profilanswer
 

Taiche a écrit :

"Par magie", non, mais si le constructeur de File ne limitait pas les URI à des schémas de type file, bin ça s'rait déjà pas mal.


nan mais ke problème il vient de l'interface de File : on ne peut pas faire toutes les opérations qu'on fait sur un File à partir d'une URI : lister les fichiers, obtenir la date de création, créer un répertoire, etc ... ce n'est pas permis par le protocole http.
 
Ce dont tu parle, c'est plutot la classe URL qui permet d'abstraire le type de document et donne une méthode d'accès au flux binaire.
 
en bref, +1 avec moins moins :o

n°732891
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 18:34:38  profilanswer
 

Ah :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732900
max2048
Begin The Begin
Posté le 20-05-2004 à 18:51:19  profilanswer
 

Bon finalement j'y suis arrivé :)
 
Pour ceux que ça intéresse :
 

Code :
  1. try {
  2.   URLConnection ucon = new URL("http://www.machin.com/toto.jpg" ).openConnection();
  3.   FileOutputStream fos = new FileOutputStream("C:\\tata.jpg" );
  4.   InputStream in = ucon.getInputStream();
  5.   int b = 0;
  6.   while ((b = in.read())!= -1)
  7.    fos.write(b);
  8.   fos.close();
  9.  }
  10.  catch (Exception e){
  11.   System.out.println(e);
  12.  }


 
Je sais pas si c'est bien fait, dans le sens où on lit byte par byte, mais en tout cas ça fonctionne.
 
Un lien qui explique brièvement les I/O : http://java.sun.com/docs/books/tut [...] rview.html


---------------
Un site web qu'il est beau (v2.0)
n°732901
uriel
blood pt.2
Posté le 20-05-2004 à 18:52:26  profilanswer
 

y a pas moyen de faire un tableau de byte ou alors de bufferiser tout ca ?


---------------
IVG en france
n°732908
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-05-2004 à 19:06:45  profilanswer
 

[:dragonman] Ouais faudrait bufferiser passke là, point de vue perfo, spa terrible :D


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°732962
seabee
Posté le 20-05-2004 à 20:16:51  profilanswer
 

Taiche a écrit :

[:dragonman] Ouais faudrait bufferiser passke là, point de vue perfo, spa terrible :D


 
 [:ludal the lethal]  
read peu prendre un tableau de byte, write aussi.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Récupérer un fichier sur un site et l'enregistrer localement ?

 

Sujets relatifs
[Java] text qu'on veut pas voir : remplacer la saisie par astérisques?[ASP 3.0] FSO + Probleme pour renommer un fichier
access vba pb boucle impression ds fichier pdf + copie du fichier[JAVA] Comment laisser tourner une méthode en arrière plan ?
[JAVA] problème de lecture de fichier[pour rigoler] le site le +
[PHP] Modifier un fichier xml avec php/domxml[résolu] Créé un fichier sur le hdd
[java] Probleme incomprehensible avec JDOM (long mais help please:'() 
Plus de sujets relatifs à : [Java] Récupérer un fichier sur un site et l'enregistrer localement ?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR