Простой вопрос, я знаю, вы можете использовать FileMove
для перемещения файла с одного пути на другой. Мой вопрос: как вы можете перемещаться из папки, полной любого типа файлы (.mp3
, .txt
, .avi
) только первый файл .txt из папки 1 в папку 2?Перенесите только первый .txt-файл из папки с помощью C#
2
A
ответ
5
Вы можете передать уайлдкард в Directory.EnumerateFiles()
:
string filename = Directory.EnumerateFiles("Your search folder here", "*.txt").Min();
if (filename != null)
{
// ... Do something with filename
}
Enumerable.Min()
возвращает «минимального» строки в последовательность (т.е. первая в алфавитном порядке) или null
, если последовательность пуста.
Это эффективно, потому что, когда вы передаете подстановочный знак, такой как *.txt
, Directory.EnumerateFiles()
, он вызывает метод Windows API, который возвращает только файлы «.txt».
2
Directory.GetAllFiles(@"path/to/files")
.Select(f => new FileInfo(f))
.First(f => f.Extension == "txt");
Это будет взрываться, если в каталоге нет файлов. Он также взорвется, если в каталоге нет текстовых файлов. Это также зависит от вашего определения «Первого»
2
Вы можете использовать GetFiles
string[] files = System.IO.GetFiles(@"C:\users\youruser\documents\", *.txt);
if(files.GetLength(0) != 0)
{
System.IO.File.Move(files[0],pathyouwanttomoveitto);
}
Какое у вас определение "first"? В алфавитном порядке? – vcsjones
Что значит «первый файл»? Вы хотите переместить файл в формате .txt в алфавитном порядке из каталога или вы хотите переместить все .txt-файлы в каталоге? Я не совсем понимаю вопрос, извините. – mxscho
в алфавитном порядке, извините, забыли указать это. –