Problème de déplacement de fichiers [JAVA] - Java - Programmation
Marsh Posté le 25-08-2005 à 15:07:28
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.
Marsh Posté le 25-08-2005 à 16:22:11
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.
Marsh Posté le 25-08-2005 à 16:40:16
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
Marsh Posté le 25-08-2005 à 17:09:26
y a pas de problème à utiliser des outputstream & inputstream pour faire de la copie de fichier, qu'ils contiennent du texte ou non.
Marsh Posté le 25-08-2005 à 21:37:59
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?
Marsh Posté le 25-08-2005 à 21:39:00
benou a écrit : |
... 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
Marsh Posté le 25-08-2005 à 23:24:29
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é ...
Marsh Posté le 25-08-2005 à 23:30:59
useful link qu'a rien à voir avec le topic, mais pour benou: http://glaforge.free.fr/wiki/index [...] ssEncoding
Marsh Posté le 25-08-2005 à 23:39:31
ReplyMarsh Posté le 25-08-2005 à 23:42:31
ReplyMarsh Posté le 26-08-2005 à 00:18:02
the real moins moins a écrit : t'as lu la javadoc de renameTo ? |
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.
Marsh Posté le 26-08-2005 à 00:19:32
Reply
Marsh Posté le 25-08-2005 à 14:47:40
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:
Merci pour votre aide