Files löschen

Wurzelseppi

Mitglied
Hallo zusammen,

habe folgendes Problem. Ich habe mir lokal ein CSV angelegt, um meine Projektsachen versionieren zu können. Allerdings habe ich es falsch angestellt, und habe jetzt fast in jedem Verzeichnis ein Subdir "CVS" rumhängen. So, jetzt wollte ich einfach mal alle diese CVS Dinger wieder loswerden und habe mir ein kleines JAVA Programm geschrieben, das einfach durch alle Subdirs von einem bestimmten Verzeichnis an durchloopt und die CVS Folders killt. Ein Java Programm deswegen, weil es auch CVS Folder von bestimmten Repositories gibt, die ich nicht löschen will. Also schaue ich in jedem CVS Folder in das Root-File und lösche nur welche, wo ein bestimmtes Repository eingetragen ist.

Das Problem ist nun, daß er zwar alles richtig macht, aber das Root-File an sich nicht löschen kann, und damit auch nicht den Folder.
Hat jemand ne Idee ?

Meine Klasse sieht so aus:


Code:
<CODE>
package de.remove.cvs;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;



public class CVSFlagRemover
{

    private String repositoryString = "";
    private final static String STR_ROOT_FILENAME = "Root";
    private final static String STR_CVS_FOLDERNAME = "CVS";
    

    /**
     *  
     */
    public CVSFlagRemover()
    {
        super();
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args)
    {
        CVSFlagRemover rm = new CVSFlagRemover();
        rm.repositoryString = ":local:f:/cvs/myLocalCVS";

        try
        {
            rm.startRemoval("d:\\temp\\mytestfolder");
        } catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void startRemoval(String startDir) throws IOException
    {
        File currDir = new File(startDir);

        File[] files = currDir.listFiles();
        for (int i = 0; i < files.length; i++)
        {
            removeCVSFolders(files[i]);
        }

    }

    private boolean removeCVSFolders(File currFile) throws IOException
    {
        if (currFile.isDirectory())
        {
            File[] files1 = currFile.listFiles();
            for (int j = 0; j < files1.length; j++)
            {
                if (currFile.getName().equalsIgnoreCase(STR_CVS_FOLDERNAME) && currFile.isDirectory())
                {
                    if (isRelevantFolder(currFile))
                    {
                        deleteDir(currFile);
                    }
                }
                currFile = files1[j];
                removeCVSFolders(currFile);
            }
        }

        return false;

    }

    private boolean isRelevantFolder(File currFile) throws IOException
    {
        File rootFile = new File(currFile.getAbsolutePath() + "\\"+STR_ROOT_FILENAME);
        if (rootFile.canRead())
        {
            BufferedReader bReader = new BufferedReader(new FileReader(rootFile));
            String lineText = bReader.readLine();
            while (lineText != null)
            {
                if (lineText.equalsIgnoreCase(repositoryString))
                {
                    return true;
                }
                lineText = bReader.readLine();
            }
        }
        return false;
    }

    public boolean deleteDir(File dir)
    {
        if (dir.isDirectory())
        {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++)
            {
                File rootFile = new File(dir.getAbsolutePath() + "\\" + children[i]);
                if (rootFile.canWrite())
                {
                    rootFile.deleteOnExit();
                }
                else
                {
                    System.out.println("can´t delete " + rootFile.getAbsolutePath() + "\\"
                            + rootFile.getName());
                }
            }

        }

        // The directory is now empty so delete it
        return dir.delete();
    }

}

/*
 * File History
 * 
 * $Log$
 *  
 */
</CODE>



Vielen herzlichen Dank im voraus.


Gruß,


Wurzelseppi
 
Zurück