如何删除目录中的内容,而不删除目录本身?这是我到目前为止所尝试的内容

时间:2014-05-09 22:26:24

标签: c# directory

我正在创建一个读取文件路径的按钮,然后删除文件夹中的文件。它目前正在删除整个目录。这是我的代码:

public void deleteFiles(string Server)
{
    string output = "\\\\" + Server + "\\F\\Output";
    string input = "\\\\" + Server + "\\F\\Input";
    string exceptions = "\\\\" + Server + "\\F\\Exceptions";

    new System.IO.DirectoryInfo(input).Delete(true);
    new System.IO.DirectoryInfo(output).Delete(true);
    new System.IO.DirectoryInfo(exceptions).Delete(true);
}

3 个答案:

答案 0 :(得分:1)

您正在Delete上调用DirectoryInfo方法,您应该在FileInfo's上调用它:

var files =  new DirectoryInfo(input).GetFiles()
                .Concat(new DirectoryInfo(output).GetFiles())
                .Concat(new DirectoryInfo(exceptions).GetFiles());

foreach(var file in files)
     file.Delete();

另一种方式:

var files =  Directory.GetFiles(input)
                .Concat(Directory.GetFiles(output))
                .Concat(Directory.GetFiles(exceptions));

foreach(var file in files)
     File.Delete(file);

答案 1 :(得分:1)

只是删除目录并重新创建它吗?或者您想保留权限吗?

答案 2 :(得分:0)

DirectoryInfo.DeleteDirectory.Delete删除空目录,如果要删除文件,可以尝试使用此方法:

public void DeleteFiles(string path, bool recursive, string searchPattern = null)
{
    var entries = searchPattern == null ? Directory.EnumerateFileSystemEntries(path) : Directory.EnumerateFileSystemEntries(path, searchPattern);
    foreach(string entry in entries)
    {
        try
        {
            FileAttributes attr = File.GetAttributes(entry);
            //detect whether its a directory or file
            bool isDir = (attr & FileAttributes.Directory) == FileAttributes.Directory;
            if(!isDir)
                File.Delete(entry);
            else if(recursive)
                DeleteFiles(entry, true, searchPattern);
        }
        catch
        {
            //ignore
        }
    }
}