Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème delete/rename d'un fichier

Une alternative ?

Sujet résolu
    24 mai 2011 à 20:37:25

    Bonjour à tous,

    je bosse actuellement sur un projet.

    J'ai une classe qui permet de chercher/effacer une ligne dans un fichier, mais voilà, les méthodes

    delete() et renameTo(File) ne fonctionne apparemment pas.

    J'ai cherché et trouvé qu'il se peut que ce soit un problème de java/windows.

    Est-ce que quelqu'un aurait une alternative pour supprimer / renommer un fichier ?

    (J'ai une alternative un peu lente pour le delete, mais le renameTo me pose vraiment problème)

    Merci

    Tristan

    Le code:
    package test;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    
    public class Test {
    
    	/**
    	 * @param args
    	 * @throws IOException 
    	 */
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
    		File inputFile = new File("test.txt");
    		File tempFile = new File("myTempFile.txt");
    		
    		//Only works for tables with two elements (we don't need for more in db entries)
    
    		BufferedReader reader = new BufferedReader(new FileReader(inputFile));
    		BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
    
    		String lineToRemove = ("aaa".concat(",")).concat("bbb");
    		
    		String currentLine;
    
    		while((currentLine = reader.readLine()) != null) {
    		    // trim newline when comparing with lineToRemove
    		    String trimmedLine = currentLine.trim();
    		    if(trimmedLine.equals(lineToRemove)) continue;
    		    writer.write(currentLine);
    		    writer.newLine();
    		}
    		boolean success = tempFile.renameTo(inputFile);
    		
    		if(!success){ System.out.println("Problem renaming file...");}
    		
    		boolean success1 = inputFile.delete();
    
                    if(!success1){ System.out.println("Problem deleting file...");}
    		
    		reader.close();
    		writer.close();
    	}
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2011 à 21:14:15

      Tu n'as aucune exception qui est générée ??

      Sinon, je n'en suis pas sur du tout mais je pense qu'il serait préférable de fermer le flux avant de chercher à renommer ou a déplacer ton dossier


      Cordialement,
      Patouche
      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2011 à 22:11:10

        Aucune exception. Mais on dirait que le fichier ne peut pas être renommé comme
        quand tu ouvres un fichier avec une application et que tu veux le renommer.
        Windows doit bloquer ça quelque part.

        Fermer le flux avant ou après n'a rien changé au résultat.

        J'ai trouvé une alternative sans rename. Au lieu de stocker ça dans un fichier temporaire,
        je le fais dans un buffer, puis je recrée un nouveau fichier avec le même nom que celui d'origine.

        Je perd que 2sec pour supprimer le fichier, mais bon c'est pas critique vu que c'est qu'un devoir ^^

        Merci
        • Partager sur Facebook
        • Partager sur Twitter

        Problème delete/rename d'un fichier

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown