Recuperer fichier java

dioulde -  
 Achir -
Bonjour à tous,
svp quelqu'un pourrai me dire comment recuperer un fichier 'xml' en java.

j'essaye de le faire mais au fait je recupere que son URL en fait . ( String finch_URL = ("chemin ici"); )

moi je veux recupere son contenu .

merci .
A voir également:

17 réponses

Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
T'as essayé avec la classe URL? Tu crée un objet URL à partir de l'url de ton fichier et ensuite tu récupères le contenu dans un InputStream
1
dioulde
 
en fait le fichier se trouve sur mon ordi ,
donc je pense pas que çà soit la bonne methode .

je veux recuperer son contenu pour l'envoyer dans une socket par exemple

mais moi j'envoie que son chemin .


merci

(je travail sous eclipse)
1
Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
Moi aussi je travaille sous Eclipse, il est vraiment excellent ce logiciel, dommage qu'on ne puisse pas le noter ici.

BREF, pour répondre à ta question, si le fichier est sur ton ordinateur, c'est encore plus simple. T'as juste à utiliser la classe File. Après je sais pas ce que tu veux en faire, mais si tu veux l'afficher, ben tu crées un InputStream à parti de ton objet File (c'est beacoup plus simple que depuis un URL). Tu veux faire quoi exactement?
0
dioulde
 
Oui t'a raison pr eclipse
pr moi c'est le meilleur IDE , je l'utilise pr tout faire presque

pour ma question : j'ai un fichier xml donc (.txt) et je veux l'envoyer à un serveur via une socket et afficher la reponse du serveur.
voici la methode ke j'utilise :


public void envoieMessage(){


String filePath = "C:/Documents and Settings/........./workspace/monFichier.txt";
InputStream in ; // flux d'entrée
OutputStream out; // flux de sortie

if (!connexionServeur()){
System.out.println("Socket à null");}
else {System.out.println("Client >> Socket ouvert ");}

try{
out = sock.getOutputStream();
in = sock.getInputStream();

FileInputStream FileInput = new FileInputStream(filePath);

out.write(filePath.getBytes("ascii")); // écris dans le flux
out.flush();//flush() permet de "vider" le flux pour s'assurer que tout a été envoyé

StringBuffer buffer = new StringBuffer();
sock.setSoTimeout(5000); // un timeOut de 5 seconde pour la lecture du fichier
try{

while ( true ) {
int charReceived = FileInput.read();
if ( charReceived == -1 ) {
break;
}
buffer.append(charReceived + "\n");

}
}catch(IOException e){
System.out.println("temp d'attente pour la reception écoulé : >>" +e.getMessage());
e.printStackTrace();
}
try{
while (true) {
int currentByte = FileInput.read();
if ( currentByte == -1 ) {
break;
}
out.write(currentByte);
}
}
catch (IOException e){
System.out.println(" erreur en écriture : >>"+e.getMessage());
e.printStackTrace();
}
System.out.println("message envoyé au serveur > ");

try { // Lecture de la reponse du serveur
in.read();

} catch (IOException e){
System.out.println("erreur reception : "+ e.getMessage());
}

}catch(IOException e){
System.out.println("erreur envoie du Message : "+e.getMessage());
e.printStackTrace();

}
}
}// fin envoie()


merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
J'ai une question :

Puisque tu as un code, peux-tu nous dire ou ca bloque dans le code?
0
dioulde
 
l'erreur se situe au niveau de : FileInputStream FileInput = new FileInputStream(filePath);

et au niveau de ( in.read )
c-a-d :
try { // Lecture de la reponse du serveur
in.read();

} catch (IOException e){ }

Je crois ke je n'envoie pa le contenu du fichier .


si vous avez une methode plus simple que la mienne merci
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Et quelle sont les erreurs données par Eclipse?
0
dioulde
 
est - ce que ma methode est dejà bonne ou pas ?

il me renvoie une erreur d'exception sur le "in.read" et le fileInputStream.

c'est pour celà j'ai fai un catch sur le 'in.read"
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Il faudrait nous donner les 2 exceptions remontées par Eclipse
0
dioulde
 
desolé pr le retard

voici les erreurs ke eclipse renvoie :

java.io.FileNotFoundException:
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)




encore merci
0
biboo
 
Bah il ne trouve pas le fichier tout simplement, donc le chemin n'est pas bon.
Il me semble qu'il faut plutôt écrire le chemin d'accès avec des antislashs (doublé d'un caractère d'échappement), du type :

String filepath = "c:\\Dossier 1\\Dossier 2\\Fichier.txt";
0
dioulde
 
non en fait il ne trouve pa le fichier pasque c'est que le lien que j'envoie

je devrai utiliser File monFichier = new File ();

puis envoyer utiliser les Stream.

mais je sai pa trop comment je doi le faire
0
Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
public String fileToString(String cheminDuFichier) {
FileInputStream fis = null;
File f = new File("cheminDuFichier");
try {
fis = new FileInputStream(f);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] b = new byte[(int)f.length()];
try {
fis.read(b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new String(b);
}


J'ai pas testé
0
dioulde
 
Public String fileToString(String cheminDuFichier) {
FileInputStream fis = null;
File f = new File(cheminDuFichier); sans les "" try {
fis = new FileInputStream(f);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] b = new byte[(int)f.length()];
try {
fis.read(b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new String(b);
}
et çà recupère bien le contenu d'un fichier
faut juste indiquer le chemin dans le main et çà le fait

mais comment on envoie le fichier dans une socket ?
0
Phortitou Messages postés 221 Date d'inscription   Statut Membre Dernière intervention   27
 
Alors c'est ça c'est une toute autre histoire.
0
biboo
 
Bah non, il a corrigé ton erreur puisque tu n'utilisais pas le paramètre.
0
dioulde
 
OK
tu pourrai me la raconter ? lol
0
Achir
 
ok ok
dès ke je trouve je vous le montre
mille thanks
0