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

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Problème de déplacement de fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Problème de déplacement de fichiers

n°1184270
nookonee
Hummm... Delicious!!!! :D
Posté le 25-08-2005 à 14:47:40  profilanswer
 

Bonjour,
 
j'ai un petit problème que je n'arrive pas à résoudre. Je souhaite déplacer plusieurs fichiers d'un répertoire à un autre. Le souci, c'est que ca marche pour quelques fichiers, mais pas pour d'autres. J'utilise les deux fonctions suivantes:
 

Code :
  1. public static boolean copyFile(File srcFile, File tgtFile) {
  2.     boolean result = false;
  3.     FileInputStream fis = null;
  4.     FileOutputStream fos = null;
  5.         try {
  6.             tgtFile.createNewFile();
  7.         fis = new FileInputStream(srcFile);
  8.         fos = new FileOutputStream(tgtFile);
  9.         byte buf[] = new byte[512*1024];
  10.         int nbRead;
  11.             while ((nbRead = fis.read(buf)) != -1)
  12.                 fos.write(buf, 0, nbRead);
  13.         result = true;
  14.         } catch (FileNotFoundException fnfe) {
  15.          System.err.println("Error: " + fnfe);
  16.      System.exit(-1);     
  17.     } catch (IOException ioe) {
  18.      System.err.println("Error: " + ioe);
  19.      System.exit(-1);
  20.     } finally {
  21.         try {
  22.             fis.close();
  23.         } catch (Exception e) {
  24.          System.err.println("Error: " + e);
  25.       System.exit(-1);
  26.         }
  27.         try {
  28.             fos.close();
  29.         } catch (Exception e) {
  30.          System.err.println("Error: " + e);
  31.       System.exit(-1);
  32.         }   
  33.     }
  34.     return (result);
  35. } //copyFile(File, File)
  36. public static boolean moveFile(File srcFile, File tgtFile) {
  37.  boolean result = false;
  38.     if (!tgtFile.exists()) {
  39.             result = srcFile.renameTo(tgtFile);
  40.             if (!result) {
  41.                 result = true;
  42.                 result &= copyFile(srcFile, tgtFile);
  43.                 result &= srcFile.delete();
  44.             }
  45.         }
  46.     return (result);
  47. } // moveFile(File, File)


 
Merci pour votre aide  :jap:  

mood
Publicité
Posté le 25-08-2005 à 14:47:40  profilanswer
 

n°1184295
nookonee
Hummm... Delicious!!!! :D
Posté le 25-08-2005 à 15:07:28  profilanswer
 

Pour info, il s'agit de fichiers texte (ASCII) similaire dans leur structure mais pas dans leur contenu.
Ils sont stockés sur mon disque dur. Le déplacement se fait sur la même partition.

n°1184382
Profil sup​primé
Posté le 25-08-2005 à 16:22:11  answer
 

L'utilisation de la classe FileOutputStream ( input aussi ) n'est pas adaptée à ton cas ( fichier ascii ). Relis la javadoc et pendant que tu y es, va faire un tour sur celle des classes FileReader et FileWriter... Quand tu auras parcouru ce minimum, tu pourras adapter avec de nouvelles classes bufferisée etc.  
Enfin si la méthode renameTo() de la classe File ne fonctionne pas, il faudra chercher l'erreur ailleurs que dans ton code ( nom de fichier, autorisations, filesystem etc . )
Remarque : j'ai déjà eu un problème similaire avec un fichier dans lequel j'écrivais mais pour lequel j'oubliais de flusher le flux.


Message édité par Profil supprimé le 25-08-2005 à 16:23:47
n°1184410
nookonee
Hummm... Delicious!!!! :D
Posté le 25-08-2005 à 16:40:16  profilanswer
 

Ok, mais ce que je ne comprend pas, c'est pourquoi ca marche pour certains fichiers (qui sont également des fichiers ASCII, même structure mais contenu différent) et pas pour d'autres :??:

n°1184441
benou
Posté le 25-08-2005 à 17:09:26  profilanswer
 


 :heink:  
y a pas de problème à utiliser des outputstream & inputstream pour faire de la copie de fichier, qu'ils contiennent du texte ou non.  


---------------
ma vie, mon oeuvre - HomePlayer
n°1184648
the real m​oins moins
Posté le 25-08-2005 à 21:37:59  profilanswer
 

nookonee a écrit :

Ok, mais ce que je ne comprend pas, c'est pourquoi ca marche pour certains fichiers (qui sont également des fichiers ASCII, même structure mais contenu différent) et pas pour d'autres :??:


t'as lu la javadoc de renameTo ?
http://java.sun.com/j2se/1.5.0/doc [...] a.io.File)
(que tu utilises)
 
... laisse moi deviner, les fichiers pour lesquels ça marche, c'est ceux ou le renameTo passe, et les autres c'est ceux ou tu essaies d'utiliser ta methode copy? Genre, au hasard, ça te serait pas passé par la tête de le voir ou de le mentionner?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1184649
the real m​oins moins
Posté le 25-08-2005 à 21:39:00  profilanswer
 

benou a écrit :

:heink:  
y a pas de problème à utiliser des outputstream & inputstream pour faire de la copie de fichier, qu'ils contiennent du texte ou non.


... au contraire ...
 
edit-preventif-anti-quiproquo : je veux dire 1) que ça vaut même mieux d'utiliser les streams pour faire de la copie de fichiers à moins qu'on ait envie de se casser le cul à s'assurer qu'on a bien un fichier texte 2) qu'il n'y aucun interet spécifique à utiliser reader/writer pour copier ces mêmes fichiers
 
[:dawao]


Message édité par the real moins moins le 25-08-2005 à 21:40:38

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1184719
benou
Posté le 25-08-2005 à 23:24:29  profilanswer
 

the real moins moins a écrit :

à moins qu'on ait envie de se casser le cul à s'assurer qu'on a bien un fichier texte


et dans ce cas là faut être sur de le lire dans le bon charset sinon y a un risque de plantage en cas de caractère inconnu dans le charset utilisé ...


---------------
ma vie, mon oeuvre - HomePlayer
n°1184721
the real m​oins moins
Posté le 25-08-2005 à 23:30:59  profilanswer
 

useful link qu'a rien à voir avec le topic, mais pour benou: http://glaforge.free.fr/wiki/index [...] ssEncoding


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1184728
benou
Posté le 25-08-2005 à 23:39:31  profilanswer
 

-- > intéressant :jap:


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 25-08-2005 à 23:39:31  profilanswer
 

n°1184730
the real m​oins moins
Posté le 25-08-2005 à 23:42:31  profilanswer
 

:)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1184745
nookonee
Hummm... Delicious!!!! :D
Posté le 26-08-2005 à 00:18:02  profilanswer
 

the real moins moins a écrit :

t'as lu la javadoc de renameTo ?
http://java.sun.com/j2se/1.5.0/doc [...] a.io.File)
(que tu utilises)
 
... laisse moi deviner, les fichiers pour lesquels ça marche, c'est ceux ou le renameTo passe, et les autres c'est ceux ou tu essaies d'utiliser ta methode copy? Genre, au hasard, ça te serait pas passé par la tête de le voir ou de le mentionner?


 
Désolé de répondre aussi tardivement. J'ai résolu le problème en fin d'après midi. En effet c'était une erreur d'inattention de ma part, la javadoc spécifie bien que le fichier ne peut être déplacé si un fichier du même nom existe déjà dans le dossier destination. Or pour tous les fichiers où le déplacement ne s'est pas effectué, c'était parce qu'il y avait déjà un fichier qui se nommait pareil dans le dossier de destination.
 
En fait pour renommer mes fichiers, je récupèrai le "message time" dans le contenu du fichier source qui indique la date et l'heure de génération dudit fichier source sous la forme YYMMDDhhmmss. Je me servais de ce message time pour nommer mes fichiers destination. mais j'avais pas pris en compte que plusieurs fichiers pouvaient être générés à quelques centièmes de secondes d'intervalles. Du coup certains fichiers avaient le meme message time et forcément le meem nom de destination.

n°1184747
the real m​oins moins
Posté le 26-08-2005 à 00:19:32  profilanswer
 

[:klem3i1]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?

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

  [JAVA] Problème de déplacement de fichiers

 

Sujets relatifs
probleme de formulaire a envoyerdecompresser un zip dont un des fichiers a un mauvais CRC
Problème d'actualisation[Struts-Java] Gèrer des fichiers (documents .doc)
problème impossible d'écrire dans un fichier!!!Probleme avec array_unique()
Probleme RewriteExtraction en ligne de commande de fichiers compressés.
Probleme de compilation[3D] format de fichiers image pour textures 3D (dds, tga, png)
Plus de sujets relatifs à : [JAVA] Problème de déplacement de fichiers


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