С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81

Добавление единицы к названию файла, если он существует

12.01.2015, 10:24. Показов 3144. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста как быть!
Задача следующая: У меня есть файл. Этот файл я переношу в определенную, указанную папку.
Мне необходимо сделать так, чтобы у меня добавлялась 1 к названию файла, если он уже существует в в указанной папке.
Код программы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
foreach (FileInfo file in new DirectoryInfo(@txtV.Text).GetFiles())
            {
                
                string folderName = Regex.Match(file.Name, @"[^_]+_[^_]+(?=_)").Value;    
                
                string foldersName = Regex.Match(file.Name, @"(?<=_)\d{4}\b").Value;
               // MessageBox.Show(foldersName);
                DirectoryInfo newFolder = new DirectoryInfo(@txtR.Text + @"\" + folderName + @"\" + foldersName);
                if (!newFolder.Exists)
                   newFolder.Create();                
                file.MoveTo(newFolder.FullName + @"\" + file.Name);
                               
            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2015, 10:24
Ответы с готовыми решениями:

Добавление записи, если не существует, обновление. если существует
Доброго времени суток! Ситуация такая: Есть файл в который приходит ид ($content_id), нужно пройтись по таблице (в базе) и если такой...

Добавление текущей даты к названию файла
Подскажите пожалуйста, как сделать, чтобы к названию файла добавлялась текущая дата и файл сохранялся как новый, а не перезаписывался. ...

Открыть двоичный файл, если он не существует создать его, если существует, то дописать в него
Всем здравствуйте. Открыть двоичный файл, если он не существует создать его, если существует перезаписать его новыми данными: ...

13
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
12.01.2015, 11:11
Greed29rus, вот
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
               DirectoryInfo newFolder = new DirectoryInfo(text + @"\" + folderName + @"\" + foldersName);
                if (!newFolder.Exists)
                    newFolder.Create();
 
                if (newFolder.GetFiles().Any(x => x.FullName.Equals(file.FullName))) // если такой файл есть в папке
                {
                    var newName = @"1" + file.Name; // новое имя
                    var path = Path.Combine(file.DirectoryName, newName);   // путь к новому файлу
                    File.Move(file.FullName, path); // переименовываем файл
                }
                else
                {
                    file.MoveTo(newFolder.FullName + @"\" + file.Name);
                }
            }
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
12.01.2015, 11:19  [ТС]
Выдает ошибку, что не может создать файл, так как он уже существует.
Миниатюры
Добавление единицы к названию файла, если он существует  
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
12.01.2015, 11:47
Greed29rus, ну да, потому что я не то сравнивал
C#
1
2
3
4
5
6
7
8
9
10
                if (newFolder.GetFiles().Any(x => x.Name.Equals(file.Name))) // если такой файл есть в папке
                {
                    var newName = @"1" + file.Name; // новое имя
                    var path = Path.Combine(file.DirectoryName, newName);   // путь к новому файлу
                    File.Move(file.FullName, path); // переименовываем файл
                }
                else
                {
                    file.MoveTo(newFolder.FullName + @"\" + file.Name);
                }
Добавлено через 24 секунды
я сравнивал полный путь по чемуто, а нужно было имя файла
1
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
12.01.2015, 12:16  [ТС]
Файл программа переименовывает), но оставляет в той же папке где и лежал
Но мне необходимо сделать так, чтобы (1) в конец названия файла записывала до расширения.
А если сделать так:
C#
1
var newName = file.Name + @"(1)"; // новое имя
То он записывает (1) в расширение.
У меня есть файл МП654_765432_Р-31_2013.pdf
И программа берет файл из одной папки и создает в определенной директории сначала папку МП654_765432(название), а затем в ней папку 2013(год) и уже туда переносит файл.

Если написать
C#
1
var newName = @"(1)" + file.Name;
то уже название будет другое: (1)МП654_765432, а мне надо просто МП654_765432.

Могу скинуть проект для большей понятности.
0
43 / 43 / 19
Регистрация: 30.11.2011
Сообщений: 112
12.01.2015, 12:24
А если так:
C#
1
var newName = string.Format("{0} (1).{1}", Path.GetFileNameWithoutExtension(file.Name), Path.GetExtension(file.Name));
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
12.01.2015, 12:26
Цитата Сообщение от Greed29rus Посмотреть сообщение
Но мне необходимо сделать так, чтобы (1) в конец названия файла записывала до расширения.
тогда вот так
C#
1
var newName = Path.GetFileNameWithoutExtension(file.Name) + @"(1)" + file.Extension; // новое имя
Добавлено через 40 секунд
Цитата Сообщение от k0z@k Посмотреть сообщение
А если так:
будет две точки перед расширением тогда
1
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
12.01.2015, 12:34  [ТС]
Спасибо)Теперь создается файл такой какой надо, только он не переноситься в нужную папку, а остается в той же,которой и был...
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
12.01.2015, 13:03
Цитата Сообщение от Greed29rus Посмотреть сообщение
Спасибо)Теперь создается файл такой какой надо, только он не переноситься в нужную папку, а остается в той же,которой и был...
ну вы ведь не уточнили в какую папку нужно поместить файл переименованный, и я свое додумал.

если по другому нужно то вот

C#
1
2
3
4
5
6
7
8
9
10
if (newFolder.GetFiles().Any(x => x.Name.Equals(file.Name))) // если такой файл есть в папке
                {
                    var newName = @"1" + file.Name; // новое имя
                    var path = Path.Combine(file.DirectoryName, newName);   // путь к новому файлу
                    File.Move(newFolder.FullName, path); // переименовываем файл и переносим в папку newFolder
                }
                else
                {
                    file.MoveTo(newFolder.FullName + @"\" + file.Name);
                }
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
12.01.2015, 14:17  [ТС]
Почему то ошибку выдает, что файл не существует...
Миниатюры
Добавление единицы к названию файла, если он существует  
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
12.01.2015, 15:22
C#
1
2
3
4
5
6
7
8
9
10
               if (newFolder.GetFiles().Any(x => x.Name.Equals(file.Name))) // если такой файл есть в папке
                {
                    var newName = @"1" + file.Name; // новое имя
                    var path = Path.Combine(file.DirectoryName, newName);   // путь к новому файлу
                    File.Move(Path.Combine(newFolder.FullName,file.Name), path); // переименовываем файл и переносим в папку newFolder
                }
                else
                {
                    file.MoveTo(newFolder.FullName + @"\" + file.Name);
                }
что то я сегодня не внимательный, просто пишу код без VS..
1
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
12.01.2015, 15:30  [ТС]
Теперь он переносит) но не туда
Программа переносит файл из папки, в которую нужно положить файл, в папку откуда файл должен браться)
То есть есть папка Pr из которой должен браться файл, а есть папка Pr1 в которую должен перемещаться файл в определенную папку. А получается наоборот)
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
12.01.2015, 15:46
так, если в папке newFolder есть файл file, то мы его куда переносим или переименовываем?
0
0 / 0 / 1
Регистрация: 14.12.2013
Сообщений: 81
13.01.2015, 14:29  [ТС]
Мы туда его и переносим и переименовываем)
То есть например есть файл 123_564834_Р31_2013.pdf и он у нас переноситься в папку 123_564834, а там в папку 2013, и лежит в этой папке. (Путь получается например: С\123_564834\2013)
Но если есть дубликат это файла с таким же названием 123_564834_Р31_2013.pdf, он должен тоже переноситься в ту же папку, но переименованный 123_564834_Р31_2013(1).pdf

Добавлено через 17 часов 16 минут
Я пробую следующим образом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
foreach (FileInfo file in new DirectoryInfo(@txtV.Text).GetFiles())
            {
                
                string folderName = Regex.Match(file.Name, @"[^_]+_[^_]+(?=_)").Value;
                 
                //MessageBox.Show(folderName);
                //string foldersName = Regex.Match(file.Name, @"(?<=_)\d+(?=\.)").Value;
                string foldersName = Regex.Match(file.Name, @"(?<=_)\d{4}\b").Value;
               // MessageBox.Show(foldersName);
                DirectoryInfo newFolder = new DirectoryInfo(@txtR.Text + @"\" + folderName + @"\" + foldersName);
                if (!newFolder.Exists)
                   newFolder.Create();
 
                if (newFolder.GetFiles().Any(x => x.Name.Equals(file.Name))) // если такой файл есть в папке
                {
                    string newName = Path.GetFileNameWithoutExtension(file.Name) + @"(1)" + file.Extension; // новое имя
                    string path = Path.Combine(file.DirectoryName, newName);   // путь к новому файлу
                    File.Move(path, newFolder.FullName); // переименовываем файл
                    
                }
                else
                {
                    file.MoveTo(newFolder.FullName + @"\" + file.Name);
                }
                
            }
Но выдает ошибку и говорит, что в данной папке, из которой я выбираю файл на перемещение, нет данного файла... Я как понимаю что мне необходимо его сначала переименовать, а потом уже отправлять, но как это сделать не понимаю...

Добавлено через 36 минут
Спасибо за помощь я разобрался)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2015, 14:29
Помогаю со студенческими работами здесь

Добавить если не существует, показать если существует (SQL-запрос)
Мир всем и привет Как задать sql запрос в adoquery на существование записи: &quot;если есть показать, если нет добавлять&quot;. База у...

Если h-файл существует, подключить его, если не существует, проигнорировать
Как это сделать?

Дано имя файла целых чисел. Найти количество элементов, содержащихся в данном файле. Если файла с таким именем не существует, то вывести –1
Дано имя файла целых чисел. Найти количество элементов, содержащихся в данном файле. Если файла с таким именем не существует, то вывести...

Имя файла +1 если файл существует
нужна помощь, имеется кнопка которая сохраняет файл.например сохраняю файл с именем abc. нужно сделать так чтобы если мы решили еще раз...

Если файла не существует перенаправить на индекс
Хочу кешировать страницы в определённой папке, но не могу перенаправить на индексный файл. Сейчас имею условия AddType text/xml .xsl...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru