Récupérer un fichier sur un site et l'enregistrer localement ? [Java] - Java - Programmation
Marsh Posté le 20-05-2004 à 02:03:59
Code :
|
Marsh Posté le 20-05-2004 à 12:48:57
Seabee a écrit du code : bla bla bla |
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.
Marsh Posté le 20-05-2004 à 13:28:15
max2048 a écrit : Merci mais justement ça ne fonctionne pas pour un fichier distant. |
Passe par une URI.
Marsh Posté le 20-05-2004 à 14:57:26
ReplyMarsh Posté le 20-05-2004 à 15:08:31
Chais pas.. Essaie ça:
Seabee a écrit :
|
Marsh Posté le 20-05-2004 à 15:44:18
Euh oui mais non :
Citation : |
Donc http passera pas
Pour moi faut passer par l'ouverture d'une HttpUrlConnection et récupérer le résultat d'un GET en utilisant getInputStream()
Marsh Posté le 20-05-2004 à 15:48:45
Taiche a écrit : Euh oui mais non :
|
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
Marsh Posté le 20-05-2004 à 15:51:08
Seabee a écrit : Je trouve tout ça bien pourrave! |
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://"
Marsh Posté le 20-05-2004 à 15:54:02
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://" |
C'est exactement ce que je voulais dire mais j'arrive pas à m'exprimer aujourd'hui
Marsh Posté le 20-05-2004 à 16:26:19
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)
Marsh Posté le 20-05-2004 à 16:36:12
the real moins moins a écrit : ce qui est surtout débile à la base c'est de vouloir ouvrir un fichier distant avec File |
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
Marsh Posté le 20-05-2004 à 16:36:47
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 : |
Ba c'est c'que j'dis Utiliser une URI en constructeur mais limiter à file:// ça restreint horriblement et j'avoue ne pas bien saisir l'intérêt.
Marsh Posté le 20-05-2004 à 16:38:41
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 |
ben nan File c'est une representation abstraite d'un fichier sur le file system local
passer par URI ou URL c'est bon, mais apres vouloir passer par FileInputStream et compagnie ça l'est pas
(d'aiilleurs tu peux avoir l'inputstream ou l'url connection depuis URL, et ça marche probablement en local
Marsh Posté le 20-05-2004 à 16:41:52
Taiche a écrit : |
+1 avec le dindon
Marsh Posté le 20-05-2004 à 16:42:35
the real moins moins a écrit : ben nan File c'est une representation abstraite d'un fichier sur le file system local |
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
Marsh Posté le 20-05-2004 à 16:46:45
Taiche a écrit : Tu peux très bien ouvrir des fichiers en réseau local s'ils sont mappés sur ta machine. |
ce qui revient au meme au niveau de l'os, contrairement à une resource http
Marsh Posté le 20-05-2004 à 17:00:48
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
Marsh Posté le 20-05-2004 à 17:04:26
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. |
ben non, tu passes par URL.
Marsh Posté le 20-05-2004 à 17:06:14
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...
Marsh Posté le 20-05-2004 à 17:10:26
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
Marsh Posté le 20-05-2004 à 17:13:09
the real moins moins a écrit : new URL("file://blah/truc.txt" ); |
"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.
Marsh Posté le 20-05-2004 à 17:15:53
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 .|
Marsh Posté le 20-05-2004 à 18:20:25
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
Marsh Posté le 20-05-2004 à 18:34:38
Ah
Marsh Posté le 20-05-2004 à 18:51:19
Bon finalement j'y suis arrivé
Pour ceux que ça intéresse :
Code :
|
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
Marsh Posté le 20-05-2004 à 18:52:26
y a pas moyen de faire un tableau de byte ou alors de bufferiser tout ca ?
Marsh Posté le 20-05-2004 à 19:06:45
Ouais faudrait bufferiser passke là, point de vue perfo, spa terrible
Marsh Posté le 20-05-2004 à 20:16:51
Taiche a écrit : Ouais faudrait bufferiser passke là, point de vue perfo, spa terrible |
read peu prendre un tableau de byte, write aussi.
Marsh Posté le 19-05-2004 à 23:18:45
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)