Есть ли лучший способ поиска каталогов на файл или файлы?


Редактировать:

Цель этого метода заключается в поиске конкретного каталога для данного типа файла, экс. (*.TXT и *.ПДБ *.исполняемые"), а затем переместить файл(ы) на данный каталог и удалить исходный файл из исходного каталога.

Есть ли лучший способ, чтобы написать следующий код?:

/// <summary>
/// Moves a specific file type from a given 
/// source directory to a destination directory.
/// </summary>
/// <param name="sourceDir">The source directory.</param>
/// <param name="destDir">The destination directory.</param>
/// <param name="fileExt">Type of file to be moved.</param>
private static void MoveFilesToDirectory(string sourceDir, string destDir, string fileExt)
{
    try
    {
        if ( !Directory.Exists(sourceDir) )
        {
            Console.WriteLine("{0} does not exist.", sourceDir);
            return;
        }

        if ( !Directory.Exists(destDir) )
        {
            Directory.CreateDirectory(destDir);
        }

        foreach ( String dir in Directory.GetDirectories(sourceDir) )
        {
            foreach ( String file in Directory.GetFiles(dir, fileExt) )
            {
                string fileName = Path.GetFileName(file);
                string moveFileTo = Path.Combine(destDir, fileName);

                if ( !File.Exists(moveFileTo) )
                {
                    Directory.Move(file, moveFileTo);
                }

                File.Delete(file);
            }

            MoveFilesToDirectory(dir, destDir, fileExt);
        }
    }
    catch ( IOException ex )
    {
        Console.WriteLine(ex.Message);
    }
}


30271
7
задан 26 апреля 2011 в 09:04 Источник Поделиться
Комментарии
2 ответа

    static void Main(string[] args)
{
String mask = "*.txt";
String source = @"c:\source\";
String destination = @"c:\destination\";

String[] files = Directory.GetFiles(source, mask, SearchOption.AllDirectories);
foreach (String file in files)
{
File.Move(file, destination + new FileInfo(file).Name);
}
}

Добавить в собственный каталог существует логика проверки... но это должно быть все, что вам нужно в ядре. Я не проверял этот код, но эти встроенные функции должны делать то, что вы хотите.

7
ответ дан 26 апреля 2011 в 12:04 Источник Поделиться

Из MSDN:

string sourceFile = @"C:\Users\Public\public\test.txt";
string destinationFile = @"C:\Users\Public\private\test.txt";

// To move a file or folder to a new location:
System.IO.File.Move(sourceFile, destinationFile);

// To move an entire directory. To programmatically modify or combine
// path strings, use the System.IO.Path class.
System.IO.Directory.Move(@"C:\Users\Public\public\test\", @"C:\Users\Public\private");

3
ответ дан 26 апреля 2011 в 09:04 Источник Поделиться