-
Lire un fichier distant
Salut,
J'aimerais savoir quelle serait la meilleur solution pour lire un fichier distant qui ne réside pas sur un serveur web?(Donc sans http)
J'ai pensé à sftp en utilisant jcraft mais je ne peux pas lire le fichier à moins de le downloadé...J'aimerais ne recevoir que son contenu et non le mettre sur le système de fichier local.(corrigé moi si vous connaissez un moyen de faire ceci avec sftp avec Java)
J'ai aussi pensé à mettre un petit serveur sur le poste distant et utilisé un socket qui déclencherais la lecture du fichier à partir du serveur et qui lui, retournerais le contenu, mais j'aimerais savoir si vous connaissez une solution plus standard avec un protocole déjà existant? car j'aimerais ne pas mettre mettre un programme serveur sur l'autre poste (À moins bien sur d'etre un serveur sftp etc.).
Merci.
-
Si tu veux lire des fichiers sur un poste distant, il FAUT, sous quelque forme que ce soit, un RESEAU, et un PROTOCOLE. Tu ne PEUX PAS y échapper.
Apparement, il semble qu'il y ait un réseau. C'est bien. Pour le protocole, on sait qu'il n'y a pas de serveur web, mais c'est tout ce que l'on sait...
Mon conseil :fleche: Examine la machine distante ; peut être y a-t-il déjà un protocole serveur ? (ftp, telnet, voisinage réseau...) Et dis-nous ce que tu vois.
-
En faite j'ai déjà regardé et il y a sftp (donc bien-sur ssh). Le problème est que j'aimerais recevoir seulement le contenu du fichier et non le fichier car je ne veux pas le sauvegarder en local. Je pourrais faire un Share mais j'aimerais ne pas faire cela.
Le but est d'afficher sur le web les logs d'un autre serveur. Je ne veux donc pas qu'il se crée un fichier sur le serveur web à chaque refresh de la page...
Je pourrais bien sur le lire puis le supprimer mais c'est pour cette raison que je voudrais seuelement son contenu car sinon c'est un étape de plus pour rien.
Merci.
-
Mais quel paquetage utilises-tu pour lire le fichier ?... Normalement, quel que soit le paquetage, tu reçois un flux de données, que tu exploites ensuite comme tu veux ; si tu ne veux pas de fichiers, alors tu ne fais pas de fichiers, c'est aussi simple que cela.
Peut être n'utilises-tu pas de paquetage, mais que tu exploites simplement des commandes système ? Peut être alors pourras-tu faire ton marché avec la classe Process, qui permet d'exploiter les flux entrant et sortant d'une commande shell.
-
En faite, je regardais du côté de Jcraft pour faire du sftp.
Cependant, son interface de methodes indique que je dois nécessairement
downloader le fichier en locale pour le lire. Ce que je ne veux pas.
(Ça fais du sens considérant que c'est du "file transfer protocole")
Je sais que je pourrais lire ce fichier en local puis le supprimer ensuite mais je trouve que ça fais malpropre et pas complètement "thread-safe" à moins de faire attention. Ça me donnerais donc une étape inutile de trop et compliquerait le code.
La solution que j'ai en ce moment est de mettre un share en Windows et montrer ce share avec samba sur ma machine linux.
Ensuite je pourrais faire mon new File("path du nfs") .
Je pourrais donc lire le flux de données du fichier et l'afficher dans ma table sur mon serveur web(qui est sur la machine linux) sans downloader ce fichier en locale.
Mais si possible,j'aimerais ne pas faire de share.
Tu parles de paquetage, en connais-tu un qui qui functionnerais pour ce que je veux faire? Par exemple, un paquetage englobant un protocole dans le même style que sftp mais permettant de seulement recevoir le flux comme tu dis? C'est exactement ça que j'aimerais trouver car je n'en trouve pas.
Merci.
-
Moi j'utilise Commons Net (mais j'ai pas vu sftp dans la liste des protocoles supportés, c'est pour ça que je ne t'en ai pas parlé).
Dans les commons, VFS (Commons Virtual File System) pourrait aussi t'interresser.
Peut être aussi pourras-tu trouver des choses à Open Source Network Clients in Java.