Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Сортировка файлов по папкам c#

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C/C++ только в данном разделе

Ответ
 
Опции темы
Старый 23.03.2011, 22:09   #1
 Разведчик
Аватар для Relapsein
 
Relapsein неизвестен в этих краях
Регистрация: 07.02.2011
Сообщений: 14
Популярность: -64
Сказал(а) спасибо: 10
Поблагодарили 14 раз(а) в 12 сообщениях
 
Smile Сортировка файлов по папкам c#


Последний раз редактировалось Relapsein; 24.05.2012 в 07:28.
  Ответить с цитированием
Старый 27.03.2011, 13:06   #2
 Пехотинец
Аватар для CaptainAmerica
 
CaptainAmerica на правильном пути
Регистрация: 17.12.2010
Сообщений: 50
Популярность: 68
Сказал(а) спасибо: 10
Поблагодарили 29 раз(а) в 26 сообщениях
 
По умолчанию Re: Сортировка файлов по папкам c#

Цитата:
Сообщение от RelapseinПосмотреть сообщение
Прошу помощи в создании кода на c# , делать он будет следующее :
К примеру у нас есть папка "Windows" ,
В ней находятся файлы со следующими названиями :
port56893.doc
port45567.doc
more324563.doc
more456735.doc .
Как видно , начало у некоторых файлов одинаковое ,
этим способом я пытаюсь реализовать следуещее :
Файлы с именами "port****.doc" будут перемещены в папку "Port" ,
Файлы с именами "more*****.doc" будут перемещены в папку "More" ,
Т.е файлы с определенным началом названия , должны перемещаться в оп
ределенную папку .

DirectoryInfo dir = new DirectoryInfo(@"C:\Test_dir");// здесь будет твоя исходная папка: Windows или любая другая
FileInfo[] get_files = dir.GetFiles();
DirectoryInfo port_dir = Directory.CreateDirectory(@"C:\Test_dir\Port");
DirectoryInfo more_dir = Directory.CreateDirectory(@"C:\Test_dir\More");

foreach(FileInfo flf in get_files)
{
if (flf.Name.Contains("port"))
{
flf.MoveTo(@"C:\Test_dir\Port\"+flf.Name);
}
else
if (flf.Name.Contains("more"))
{
flf.MoveTo(@"C:\Test_dir\More\"+flf.Name);

}

}
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Пользователь сказал cпасибо:
Relapsein (30.03.2011)
Старый 28.03.2011, 02:03   #3
 Пехотинец
Аватар для CaptainAmerica
 
CaptainAmerica на правильном пути
Регистрация: 17.12.2010
Сообщений: 50
Популярность: 68
Сказал(а) спасибо: 10
Поблагодарили 29 раз(а) в 26 сообщениях
 
По умолчанию Re: Сортировка файлов по папкам c#

Цитата:
Сообщение от RelapseinПосмотреть сообщение
А если имен файлов много ? к примеру 7?

поверь, 7 - это не много.

Цитата:
Сообщение от RelapseinПосмотреть сообщение
Если использовать условия , надеюсь все не закончится на первых файлах =)

а foreach тебе не о чем не говорит ?
Цитата:
Сообщение от RelapseinПосмотреть сообщение
Также стоит проблема в одинаковых именах файлов , они вроде будут перезаписыватся .

а как по-твоему могут оказаться в одной папке файлы с одинаковыми именами ? правильно - у них разное расширение, а оно как известно является частью имени файла.... думаю понятно..
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 28.03.2011, 22:15   #4
 Разведчик
Аватар для Diverclaim
 
Diverclaim на правильном пути
Регистрация: 01.07.2010
Сообщений: 40
Популярность: 58
Сказал(а) спасибо: 9
Поблагодарили 24 раз(а) в 12 сообщениях
 
По умолчанию Re: Сортировка файлов по папкам c#

Намного интереснее сделать программу которая сможет сортировать файлы заранее не зная "одинаковой части файлов". То есть не зная заранее что в начале файла стоит 'more' или 'port'. Если известно что в имени файла сначала идет название папки а потом цифры - то задача проще простого. Создаём список и добавляем в него все названия папок без повторений. Потом пробегаемся по этому списку и создаём соответствующие директории. Затем пробегаемся по файлам снова и уже раскидываем их по папкам.

Пример:
Код:
FolderBrowserDialog folderSelect = new FolderBrowserDialog();
folderSelect.ShowDialog();

DirectoryInfo fldrInfo = new DirectoryInfo(folderSelect.SelectedPath);
FileInfo[] allFiles = fldrInfo.GetFiles();

List<string> folderNames = new List<string>();
foreach (FileInfo file in allFiles)
{
   if (!folderNames.Contains(GetName(file.Name)))
   {
      folderNames.Add(GetName(file.Name));
   }
}

foreach (string fldrName in folderNames)
{
   Directory.CreateDirectory(folderSelect.SelectedPath + @"\SORTED\" + fldrName);
}

foreach (FileInfo file in allFiles)
{
   File.Move(file.FullName, folderSelect.SelectedPath + @"\SORTED\" + GetName(file.Name) + @"\" + file.Name.Replace(GetName(file.Name), ""));
}
и GetName:
Код:
char[] arrayName = allName.ToCharArray();
StringBuilder bldr = new StringBuilder();

string endefers = "0123456789.";

for (int i = 0; i < arrayName.Length; i++)
{
   if (endefers.IndexOf(arrayName[i]) == -1)
   {
      bldr.Append(arrayName[i]);
   }
   else
   {
      break;
   }
}

return bldr.ToString();

Последний раз редактировалось Diverclaim; 28.03.2011 в 22:39.
  Ответить с цитированием
Ответ

Метки
c# сортировка файлов


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Request сортировка методом Двоичнго Дерева (Pascal) FFForever Вопросы и ответы, обсуждения 3 05.12.2012 11:59
Сортировка бд для брута. Semur1 Общение и обсуждение, архив Lineage 2 1 10.02.2011 08:29
[Программа] TrueSort - сортировка словарей. От ErrorNeo talala Базы серверов и брут 0 13.06.2010 23:08
[Руководство] Получение полного доступа к системным папкам и отключение проверки сертифицированност Razzor Symbian 9.1-9.3 1 08.06.2010 17:00

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 00:06.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net