Raj.rcr Ответов: 3

Удалить расширение из нескольких файлов в нескольких подкаталогах


Дорогие Все,

Я хочу удалить расширение из всех доступных файлов во всех подпапках в главной папке.

Пример: ниже приведена структура папок.

MainDirectory
|
|---> SubDirectory1/ abc1.config.txt / abc2.config.txt /  abc3.config.txt /
|
|---> SubDirectory2/ abc1.config.txt / abc2.config.txt /  abc3.config.txt /
|
|---> SubDirectory3/ abc1.config.txt / abc2.config.txt /  abc3.config.txt /

Итак, я хочу, чтобы расширение ".txt" было удалено из всех файлов во всех подкаталогах программно в c#, так что в конце у меня будут только конфигурационные файлы.

Пожалуйста, предложите или предоставьте какой-нибудь фрагмент кода c#.

Заранее спасибо,

Что я уже пробовал:

Я пробовал путь.ChangeExtension, который фактически заменяет расширение на null, но он не применяется для физического файла. Я имею в виду, что он просто дает пользователю логическую ценность.

BillWoodruff

Нужно ли выполнять это изменение рекурсивно, т. е. существуют ли произвольные уровни вложенности ?

3 Ответов

Рейтинг:
15

OriginalGriff

Попробуй:

string[] files = Directory.GetFiles(@"D:\Temp\", "*.txt", SearchOption.AllDirectories);
foreach (string file in files)
    {
    File.Move(file, file.Substring(0, file.Length - 4));
    }


Raj.rcr

Работает, как и ожидалось.. большое спасибо..

OriginalGriff

Пожалуйста!

Рейтинг:
1

Richard MacCutchan

После того как вы изменили расширение, которое вам нужно использовать Файл.Метод Перемещения (String, String) (System.IO)[^] чтобы переименовать его.


Рейтинг:
1

BillWoodruff

Вы можете позвонить передвигаются на файл, при удалении ".расширение txt", результатом которой станет расширение бытия ".конфиг:"

string path = @"C:\Users\Whoever\Desktop\SubDirectory1\abc1.txt.config";

string newpath = Path.ChangeExtension(path, "");
File.Move(path, newpath);
Хотя это "работает", необходимость манипулировать расширениями файлов таким образом заставляет меня задуматься, нет ли более простого способа сделать то, что вы здесь делаете.