Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/251: Рейтинг темы: голосов - 251, средняя оценка - 4.96
1 / 1 / 0
Регистрация: 05.06.2012
Сообщений: 112
1

Как узнать сколько файлов в папке?

10.07.2012, 13:50. Показов 48961. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как узнать сколько файлов в папке. Можно код для примера. Подскажите кто знает. Спасибо зарание
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.07.2012, 13:50
Ответы с готовыми решениями:

Как создать в папке множество файлов с уникальными именами
Доброго времени суток! В программе планирую создавать временные файлы в папке TEMP. После закрытия программы необходимо удалить файлы в...

Как быстро прочитать много текстовых файлов в папке
День добрый. Столкнулся с проблемой, в папке очень много xml файлов (около 1000). Нужно быстро сделать по ним выборку. Почитал что...

Как вывести путь к папке временных файлов (Temp)
Полскажите вот знаю как вывести системную папку ну в консоле а как вывести папку temp по дефолту она скрытая помоему

18
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 4
10.07.2012, 13:55 2
Думаю найдете все, что нужно... Пространство имен - System.IO (Работа с файлами, директориями, дисками, памятью)
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
10.07.2012, 15:20 3
вот так к примеру:
C#
1
Text=new DirectoryInfo(@"C:\Users\lionell\Desktop").GetFiles().Length.ToString();
2
+B
Заблокирован
10.07.2012, 15:32 4
Цитата Сообщение от Монфрид Посмотреть сообщение
вот так к примеру:
А если каталог имеет вложенные папки? Твой вариант тогда не подойдет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
             int i = 0;
            System.IO.DirectoryInfo directoryInfo = new System.IO.DirectoryInfo(dir_path);
            if (directoryInfo.Exists)
            {
                // ищем в корневом каталоге
                i += directoryInfo.GetFiles(\"*.*\", System.IO.SearchOption.TopDirectoryOnly).Length;
 
                // ищем во всех папках                
                i += directoryInfo.GetFiles(\"*.*\", System.IO.SearchOption.AllDirectories).Length;
 
 
            }
 
            this.Text = i.ToString();
1
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
10.07.2012, 15:35 5
+B, ну он ничего не говорил про вложенные папки
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
10.07.2012, 17:05 6
Цитата Сообщение от +B Посмотреть сообщение
А если каталог имеет вложенные папки? Твой вариант тогда не подойдет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
             int i = 0;
            System.IO.DirectoryInfo directoryInfo = new System.IO.DirectoryInfo(dir_path);
            if (directoryInfo.Exists)
            {
                // ищем в корневом каталоге
                i += directoryInfo.GetFiles(\"*.*\", System.IO.SearchOption.TopDirectoryOnly).Length;
 
                // ищем во всех папках                
                i += directoryInfo.GetFiles(\"*.*\", System.IO.SearchOption.AllDirectories).Length;
 
 
            }
 
            this.Text = i.ToString();
Твой вариант тоже не самый хороший.
C#
1
2
3
4
5
6
7
8
9
10
11
             int i = 0;
            System.IO.DirectoryInfo directoryInfo = new System.IO.DirectoryInfo(dir_path);
            if (directoryInfo.Exists)
            {
 
                // ищем во всех папках                
                i = directoryInfo.GetFiles(\"*.*\", System.IO.SearchOption.AllDirectories).Length;
 
 
            }
            this.Text = i.ToString();
2
+B
Заблокирован
10.07.2012, 17:22 7
Цитата Сообщение от Zuzik Посмотреть сообщение
Твой вариант тоже не самый хороший.
Поясни. Там просто слеши перед кавычками надо убрать. Это глюк.
0
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
10.07.2012, 17:31 8
Цитата Сообщение от +B Посмотреть сообщение
Поясни. Там просто слеши перед кавычками надо убрать. Это глюк.
Поясняю. Ты сначала исчешь файлы в исходной папке, потом во всех папках, и это количество складываешь. В результате у тебя количество файлов в исходной папке берется 2 раза.
0
+B
Заблокирован
10.07.2012, 17:40 9
Цитата Сообщение от Zuzik Посмотреть сообщение
В результате у тебя количество файлов в исходной папке берется 2 раза.
А... ну да. Это я ошибся.
C#
1
2
 // ищем во всех папках                
                this.Text = new System.IO.DirectoryInfo(@\"c:\\upload\\\").GetFiles(\"*.*\", System.IO.SearchOption.AllDirectories).Length.ToString();
0
Эксперт .NET
 Аватар для Casper-SC
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
11.07.2012, 01:20 10
Я так получал список файлов с подпапками. Переделай как надо, думаю суть понятна будет:
C#
1
2
3
4
5
6
7
8
9
10
11
    public static class FileHelper
    {
        public static void GetAllFiles(string rootDirectory, string fileExtention, List<string> files)
        {
            string[] directories = Directory.GetDirectories(rootDirectory);
            files.AddRange(Directory.GetFiles(rootDirectory, fileExtention));
 
            foreach (string path in directories)
                GetAllFiles(path, fileExtention, files);
        }
    }
2
0 / 0 / 1
Регистрация: 26.07.2012
Сообщений: 9
24.09.2012, 23:17 11
не обработаны исключения
0
Эксперт .NET
 Аватар для Casper-SC
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
25.09.2012, 12:45 12
Какие? Ну дык приложите обработанный вариант. А так и я могу про любой код сказать.
0
0 / 0 / 1
Регистрация: 26.07.2012
Сообщений: 9
25.09.2012, 15:09 13
вот этот рекурсивный метод взят с MSDN для перебора всех файлов в каталоге и его под каталогах. там можно под себя переделать и подсчитать их количество.

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
27
28
29
30
31
static void WalkDirectoryTree(DirectoryInfo root)
        {
            System.IO.FileInfo[] files = null;
            System.IO.DirectoryInfo[] subDirs = null;
            try
            {
                files = root.GetFiles("*.*");
            }
            catch (UnauthorizedAccessException e)
            {
                Console.WriteLine(e.Message);
            }
            catch (System.IO.DirectoryNotFoundException e)
            {
                Console.WriteLine(e.Message);
            }
            if (files != null)
            {
                foreach (FileInfo file in files)
                {
                    string fileFullName = file.FullName;
                    double fileSize = Convert.ToDouble(file.Length);
                    Console.WriteLine("{0} - {1}", fileFullName, fileSize);
                }
                subDirs = root.GetDirectories();
                foreach (DirectoryInfo dirInfo in subDirs)
                {
                    WalkDirectoryTree(dirInfo);
                }
            }
        }
0
1 / 1 / 1
Регистрация: 19.06.2012
Сообщений: 19
26.10.2013, 13:42 14
Цитата Сообщение от Anplay Посмотреть сообщение
вот этот рекурсивный метод взят с MSDN для перебора всех файлов в каталоге и его под каталогах. там можно под себя переделать и подсчитать их количество.
А если в директории нет файлов?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void scan_dir(DirectoryInfo^ root, BackgroundWorker^ worker)  {
        array<FileInfo^>^ files;
        array<DirectoryInfo^>^ subDirs;
        try {
            files = root->GetFiles("*.*");
            subDirs = root->GetDirectories();
        } catch (Exception^ e) {
            //Console.WriteLine(e.Message);
        }
        if (files->Length>0) {
            for each (FileInfo^ file in files) {
                //String^ fileFullName = file->FullName;
                jjj+=1;
                //Console.WriteLine("{0} - {1}", fileFullName, fileSize);
            }
            worker->ReportProgress(jjj);
        }
        if (subDirs->Length>0) {
            for each (DirectoryInfo^ dirInfo in subDirs) {
                scan_dir(dirInfo, worker);
            }
        }
    }
0
0 / 0 / 1
Регистрация: 26.07.2012
Сообщений: 9
19.11.2013, 19:49 15
Java
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
    private static ArrayList<String> file_name = new ArrayList<String>(); 
    public static ArrayList<String> GetListFiles(String path){
        ArrayList<String> list = new ArrayList<String>();
        for (File i: new File(path).listFiles()){
            if (i.isFile()){
                list.add(i.getAbsolutePath());
            }
        }
        return list;
    }
    public static ArrayList<String> GetListDirs(String path){
        ArrayList<String> listD = new ArrayList<String>();
        for (File i: new File(path).listFiles()){
            if (i.isDirectory()){
                listD.add(i.getAbsolutePath());
            }
        }
        return listD;
    }
 
    public static void WalkDirectoryTree(String root){
        ArrayList<String> files = new ArrayList<String>();
        ArrayList<String> subDirs = new ArrayList<String>();
        try{
        files = GetListFiles(root);
        }catch (NullPointerException e){
            System.out.println(e.getMessage());
        }
        if(files != null){
            for(String i: files){
                file_name.add(i);
            }
            try{
            subDirs = GetListDirs(root);
            }catch (NullPointerException e){
                System.out.println(e.getMessage());
            }
            for(String i: subDirs){
                WalkDirectoryTree(i);
            }
        }
    }
0
1 / 1 / 1
Регистрация: 22.02.2017
Сообщений: 35
26.02.2017, 17:40 16
Подсчет количества файлов по указанному пути между двумя датами:

C#
1
2
3
4
5
6
var kolf = new DirectoryInfo(@"C:\\укажите путь").EnumerateFileSystemInfos("*.*", SearchOption.AllDirectories)
      .Where(file => file.LastWriteTime >= dateTimePicker1.Value && file.LastWriteTime <= dateTimePicker2.Value);
            foreach (var f in kolf)
            {
                label14.Text = "Всего файлов: " + kolf.Count();             
            }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17854 / 13958 / 5335
Регистрация: 17.03.2014
Сообщений: 28,577
Записей в блоге: 1
26.02.2017, 17:50 17
vkgorod, 1) EnumerateFileSystemInfos перебирает файлы и каталоги, поэтому число может получится неправильным 2) обновить Label достаточно один раз. Перебирать все элементы коллекции для этого точно не нужно
0
1 / 1 / 1
Регистрация: 22.02.2017
Сообщений: 35
26.02.2017, 18:00 18
Спасибо за ответ. Пункт 2 понял, а первый пункт не совсем.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17854 / 13958 / 5335
Регистрация: 17.03.2014
Сообщений: 28,577
Записей в блоге: 1
26.02.2017, 18:02 19
vkgorod, каталог может содержать файлы и другие каталоги. Метод EnumerateFileSystemInfos возвращает и то и другое. Если стоит задача подсчитать только файлы, то нужно использовать EnumerateFiles
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2017, 18:02
Помогаю со студенческими работами здесь

Как получить список файлов в папке и вывести в CheckedListBox
Как получить список файлов в папке, вывести в лист чекбокс и если на файле(в лист чекбоксе) стоит галочка, то скрыть файл? Буду рад коду...

Как сделать проверку файлов в папке по списку с сайта?
У меня есть файлы в папке,мне нужно проверить есть ли такие в списке,если такого файла нет,то его должно удалить.Список может быть txt...

Как вывести список всех файлов в папке с определенным расширением?
Здравствуйте! Есть textbox и кнопка. При нажатии на кнопку нужно, что бы программа &quot;пошла&quot; по пути &quot;C:/Files/&quot; и...

Как узнать сколько строк в массиве
Как узнать сколько строк в массиве. Имеется массив Colors public readonly Color colors = new Color { Color.Red, ...

Как узнать сколько весит изображение?
Собственно сабж


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Winforstrap или красявый дизайн своими руками на HTML+JS+Winform­s
anomal6 04.03.2025
Сидел тут вечером ковырял проект на MAUI, и как же глупо создаются пакеты MSIX и система обновлений пакета публикации, но не об этом. Бывает нужен современный дизайн программы а писать на MAUI,. . .
Формат данных для симуляции физики, посредством распространённы­­­­­­­х не обученных моделей.
Hrethgir 04.03.2025
Что-то как-то снова потерялось, зато катангенсы закатангесились в одном сообщении. На днях писал, что планирую для работы апгрейдить (на этот раз удачно) девайс для работы (конкретно - здоровья для,. . .
Концепция variadic
CoderHuligan 04.03.2025
Мне не очень нравится (а кому это нравится?) что у нас есть отдельно компилятор, отдельно линковщик, причем со своим собственным командным языком. При этом усложнении надо знать помимо языка. . .
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class — два мощных инструмента для обуздания неизменяемых структур данных, каждый со своим уникальным подходом к решению этой задачи. История их появления весьма. . .
Создание производительны­­­х API с Java и gRPC
Wired 04.03.2025
В мире микросервисной разработки вопрос производительности часто становится краеугольным камнем. И хотя REST API давно завоевал сердца разработчиков своей простотой и интуитивностью, при высоких. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 — это настоящий прорыв в эволюции Java, который кардинально меняет правила игры. В этом релизе разработчики Oracle наконец-то довели до ума множество критически важных улучшений в. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Погружаясь в мир блокчейн-разработки на Java, разработчик получает доступ к внушительному арсеналу инструментов. В отличие от Solidity, который "заперт" в экосистеме Ethereum, Java предоставляет. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru