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

  FORUM HardWare.fr
  Programmation
  Java

  Lire un fichier temporaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lire un fichier temporaire

n°688324
brethold
Posté le 31-03-2004 à 12:57:08  profilanswer
 

Salut a tous , je vais etre bref voila donc mon problem :
je dois copier un fichier txt dans un copier tmp afin de trier le fichier txt sans le modifier.
J'ai reussi donc a creer le fichier temporaire comme ca:

Code :
  1. File tmp=File.createTempFile("musdir",null,path);


 
le fichier temporaire se creer bien mais pas au nom que je ve cad musdir.tmp mais comme musdir18547.tmp. Ceci ne pose aucun souci mais je sais pas pourquoi il le creer comme ca. Le probleme c'est que j' arrive pas a lire le fichier temporaire (ni en mode char ni en mode bin)
Est ce que kk1 sait t'il ce qui me monque ou ce que j'ai oublie de faire.
Mici d'avance pour vos reponses.
 
Voici le code source du programme -->
 

Code :
  1. // Importation des pakages dont on a besoin
  2. import java.io.*;
  3. // Definition de la classe MusDirCar
  4. class MusDirCar
  5. {
  6. /***************************************************/
  7.    /*        La méthode main            */
  8.    /***************************************************/
  9. public static void main(String argv[]) throws IOException
  10. {
  11.  try
  12.  {
  13.  // Instanciation d'un objet File qui va nous permettre de copier le fichier music.txt
  14.  File mus=new File("music.txt" );
  15.  File path = new File("C:/Program Files/Xinox Software/JCreatorV3/MyProjects/MUSDIRCAR" );
  16.  // Instanciation d'un objet File tmp pour creer le fichier temporaire
  17.  File tmp=File.createTempFile("musdir",null,path);
  18.  // Destruction du fichier temporaire a la fin de l'execution
  19.  tmp.deleteOnExit();
  20.  // Instanciation d'un objet Filereader pour lire dans le fichier music.txt
  21.  FileReader in=new FileReader(mus);
  22.  // Instanciation d'un objet FileWriter pour ecrire dans le fichier musdir.tmp
  23.  FileWriter out=new FileWriter(tmp.getName());
  24.  // on parcour tout le fichier source caractere par caractere
  25.  // Tant qu'on a pas atteint la fin du fichier on lit un caractere et on le copie dans le fichier temporaire  
  26.  int c=in.read();
  27.  while((c=in.read()) != -1)
  28.  {
  29.   // Ecriture dans le fichier temporaire
  30.   out.write(c);
  31.   // Si on veut afficger le contenu du fichier source  /*System.out.print((char)c);*/
  32.  }
  33.  System.out.print("Nom du fichier temporaire "+tmp.getName()+"\n" );
  34.  File t=new File(tmp.getName());
  35.  BufferedReader temp=new BufferedReader(new FileReader(t));
  36.  String ligne;
  37.  StringBuffer contenu = new StringBuffer();
  38.  System.out.print("\nAffichage de la 1ere ligne temporaire \n" );
  39.  ligne=temp.readLine();
  40.  System.out.print(ligne);
  41.  /*while((ligne=temp.readLine()) != null)
  42.  {
  43.   System.out.print("Affichage du fichier temporaire \n" );
  44.   System.out.print(ligne);
  45.   contenu.append(ligne);
  46.   contenu.append("\r\n" );
  47.  }*/
  48.  // Fermeture des flux de lecture et d'ecriture sur les fichiers
  49.  in.close();
  50.  out.close();
  51.  }
  52.  // Si une exeption se declenche on renvoie le message d'erreur coresspondant ainsi que l'etat de la pile
  53.     catch(IOException e)
  54.      {
  55.        System.out.println("\nUne exception s'est produite : Message d'erreur "+e.getMessage());
  56.    System.out.println("\nrnAffichage de la pile :rn" );
  57.          e.printStackTrace();
  58.      }
  59.    
  60.      finally
  61.      {
  62.        System.out.println("\nFin des instructions pour la 1ere etape : \n" );
  63.      }
  64.    
  65.      System.exit(0);
  66. }
  67. }


 
ps: j'arrive a lire le fichier sous dos!!


Message édité par brethold le 31-03-2004 à 13:05:23
mood
Publicité
Posté le 31-03-2004 à 12:57:08  profilanswer
 

n°688350
darklord
You're welcome
Posté le 31-03-2004 à 13:26:49  profilanswer
 

lire la javadoc de la méthode createTempFile devrait t'aider [:kiki]


Message édité par darklord le 31-03-2004 à 13:26:58
n°688355
brethold
Posté le 31-03-2004 à 13:28:47  profilanswer
 

Biensur que je l'ai lu , c assez clair en +  
public static File createTempFile(String prefix,
                                  String suffix,
                                  File directory)
                           throws IOExceptionCreates a new empty file in the specified directory, using the given prefix and suffix strings to generate its name. If this method returns successfully then it is guaranteed that:  
 
The file denoted by the returned abstract pathname did not exist before this method was invoked, and  
Neither this method nor any of its variants will return the same abstract pathname again in the current invocation of the virtual machine.  
This method provides only part of a temporary-file facility. To arrange for a file created by this method to be deleted automatically, use the deleteOnExit() method.  
The prefix argument must be at least three characters long. It is recommended that the prefix be a short, meaningful string such as "hjb" or "mail". The suffix argument may be null, in which case the suffix ".tmp" will be used.  
 

n°688362
darklord
You're welcome
Posté le 31-03-2004 à 13:42:42  profilanswer
 

Citation :


le fichier temporaire se creer bien mais pas au nom que je ve cad musdir.tmp mais comme musdir18547.tmp.


 

Citation :


Creates a new empty file in the specified directory, using the given prefix and suffix strings to generate its name.  


 
Si meme après avoir lu la doc tu ne comprends tjrs pas, t'es mal barre :D
 
Tu sais ce que c'est un suffixe et un préfixe? La méthode en fait génère un fichier avec un nom qui est unique par JVM en tenant compte du suffixe et du préfixe que tu passes (.tmp par défaut)
 
donc là c'est musdirXXXXXX.tmp où XXXXX est un truc généré par la JVM pour éviter d'avoir un clash avec un fichier existant.
 
Si tu veux créer un ficher avec un nom complete crée le normallement.

n°688375
brethold
Posté le 31-03-2004 à 13:48:32  profilanswer
 

ok mais ca c'est pas vraiment le problem , mon problem ce de pas pouvoir lire dans le fichier temporaire alors qu'avec un type sous dos ca marche!!pourquoi j'arrive pas a acceder au fichier temporaire ???

n°688397
darklord
You're welcome
Posté le 31-03-2004 à 13:58:16  profilanswer
 

Qu'est ce que tu appelles lire? Via ta classe. Si oui quelle est l'exception.
 
Parce que d'après ce que je vois le fichier est effacé à la fin.

n°688448
brethold
Posté le 31-03-2004 à 14:11:30  profilanswer
 

oui c vrai, normalement il doit etre efface a la fin de l'execution avec tmp.deleteOnExit();  
Mais c'est pas le cas , il s'efface pas et je le trouve dans le dossier du projet. Le programme a bien copie dedans le fichier music.txt.
Maintenant pour ta question Qu'est ce que tu appelles lire? je ve l'afficher pour verifier que j'ai bien acces aux donnees qui sont a l'interieur pour trier le dihcier music.txt.
Voici la boucle qui normlalement devrai l'afficher :

Code :
  1. File t=new File(tmp.getName());
  2.           BufferedReader temp=new BufferedReader(new FileReader(t));
  3.           String ligne;
  4.           StringBuffer contenu = new StringBuffer();
  5.           System.out.print("\nAffichage de la 1ere ligne temporaire \n" );
  6.           // Ici pour lire la 1ere ligne
  7.           //ligne=temp.readLine();  
  8.           //System.out.print(ligne);  
  9.           while((ligne=temp.readLine()) != null)
  10.           {
  11.            System.out.print("Affichage du fichier temporaire \n" );
  12.            System.out.print(ligne);
  13.            contenu.append(ligne);
  14.            contenu.append("\r\n" );
  15.           }


 
j'ai essayer de lire le fichier music.txt comme ca et ca marche parfaitement.
 
Ici il rentre meme pas dans while car String ligne est toujrours null et c'est ca ce que je comprend pas , pourquoi j'y ai pas acces comme le fichier txt.


Message édité par brethold le 31-03-2004 à 14:14:14
n°688457
darklord
You're welcome
Posté le 31-03-2004 à 14:14:02  profilanswer
 

Désolé mais tu es trop confus, je ne comprends rien du tout. Tu le trouve dans le dossier du projet alors qu'il doit etre créer dans le rep temporaire, il n'est pas effacé et j'ai toujours pas compris ce que tu veux dire j'arrive pas à le lire (avec quoi / comment)
 
enfin bon je passe la main :o

n°688483
brethold
Posté le 31-03-2004 à 14:18:19  profilanswer
 

DarkLord a écrit :

Désolé mais tu es trop confus, je ne comprends rien du tout. Tu le trouve dans le dossier du projet alors qu'il doit etre créer dans le rep temporaire, il n'est pas effacé et j'ai toujours pas compris ce que tu veux dire j'arrive pas à le lire (avec quoi / comment)
 
enfin bon je passe la main :o


 
il ya deux constructeur pour la methode CreateTempFile , moi j'utilise celle avec 3 arguments pour modifier l'emplacement ou jvm cree le fichier tmp , je fé en corte qu'il le cree dans mon dossier de projet c tt et ca se voit tres vite dans le code source.

n°688596
brethold
Posté le 31-03-2004 à 16:00:05  profilanswer
 

j'ai fini par comprendre , il falait fermer le flux sur le fichier temporaire juste apres qu'on copie dedans le fichier txt sinon il reste en cour d'utilisation et donc je pouvé pas le lire.

mood
Publicité
Posté le 31-03-2004 à 16:00:05  profilanswer
 

n°689126
benou
Posté le 31-03-2004 à 23:07:48  profilanswer
 

brethold a écrit :

j'ai fini par comprendre , il falait fermer le flux sur le fichier temporaire juste apres qu'on copie dedans le fichier txt sinon il reste en cour d'utilisation et donc je pouvé pas le lire.
 


ouais ca c'était le 1er problème ...
 
le 2e problème c'est ca :
           FileWriter out=new FileWriter(tmp.getName());  
 
pkoi tu fais un getName() ? getName te retourne uuniquement le nom du fichier => ce sera un chemin relatif => ca va utiliser le répertoire par défaut pour créer le fichier et pas le répertoire temporaire. C'es pour ca que tu le trouves dans le dossier de ton projet
 
fait simplement :  
           FileWriter out=new FileWriter(tmp);  


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

  Lire un fichier temporaire

 

Sujets relatifs
Lire les fichiers de log[File] Ecrire dans un fichier que j'ai créé !!!
ouvrir un fichier depuis excelComment gérer le temps d'upload d'un fichier
Fichier ou BD ?méthode optimisée d'écriture dans un fichier log
[RESOLU][VB6] Lire un fichier texteimporter fichier texte dans feuille excel?
Importer fichier access sous visual BAsic 
Plus de sujets relatifs à : Lire un fichier temporaire


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