1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
1

Количество файлов на ПК

24.11.2015, 06:43. Показов 1409. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как вывести количество файлов на всех дисках ПК?

Добавлено через 9 минут
Пробую так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            DriveInfo[] allDrives = DriveInfo.GetDrives();
            foreach (DriveInfo d in allDrives)
            {
                try
                {
                    System.IO.DirectoryInfo number = new System.IO.DirectoryInfo(@d.Name);
                    int count = number.GetFiles().Length;
                    label3.Text = Convert.ToString(count);
                }
                catch
                {
 
                }
            }
но чет не хочет
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2015, 06:43
Ответы с готовыми решениями:

Подсчитать количество файлов для каждого из имеющихся расширений файлов
Подсобите) - посчитать все разрешения файлов в текущем каталоге и вывести - файлов типа - jpeg - 20...

Подсчет размеров файлов в байтах. Ошибки вычисления если файлов значительно количество
Здравствуйте. Рекурсивная функция пробегает по директории и поддиректориям, если встречает файл,...

Как посчитать количество файлов в папке и создать соответствующее количество UserControl?
Есть программа, которая по нажатию кнопки должна посчитать количество файлов xml в папке и создать...

Количество файлов в книге
Добрый день! Это код, который открывает книги в папке, есть одно условие, все файлы начинаются с...

19
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
24.11.2015, 08:54 2
так разве не надо смотреть файлы и папки во всех вложенных папках?)
0
78 / 77 / 52
Регистрация: 11.06.2015
Сообщений: 189
24.11.2015, 11:02 3
Насколько я помню, то метод GetFiles выдает список фалов, лежащих непосредственно в этой папке, а не в подпапках. Для обхода всего вам нужна рекурсивная функция. Примерно она выглядит так
C#
1
2
3
4
5
6
7
8
9
CountFile(string directory , ref int count)
{
...
count += directory.GetFiles().Length;
var directories = directory.GetDirectories();
foreach(var dir in directories)
     CountFiles(dir, ref count);
...
}
Примерно так, а запускать в вашем цикле по всем дискам.
0
116 / 115 / 64
Регистрация: 03.06.2013
Сообщений: 582
24.11.2015, 13:20 4
C#
1
Directory.GetFiles(@"F:\tp", "*.*", SearchOption.AllDirectories)
- юзайте.
0
78 / 77 / 52
Регистрация: 11.06.2015
Сообщений: 189
24.11.2015, 14:44 5
MaxSlim, ммм даже лучше
0
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
24.11.2015, 18:59  [ТС] 6
Спасибо это то я знал, но как вывести число файлов с помощью вашего кода?
например в label.Text
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
24.11.2015, 19:20 7
C#
1
 label.Text = Directory.GetFiles(@"F:\tp", "*.*", SearchOption.AllDirectories).Length.ToString();
Очевидно как-то так.
0
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
24.11.2015, 20:43  [ТС] 8
Да спасибо Ваш код работает. Но... Пытаюсь засунуть его в background worker - ищу все файлы на диске С.
Программа просто повисает. Видать слишком высокая нагрузка.

Добавлено через 27 секунд
и когда повисает ничего не выводится.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
24.11.2015, 21:15 9
Лучший ответ Сообщение было отмечено XhonoRjke как решение

Решение

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
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.IO;
 
namespace WindowsFormsApplication72
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            BackgroundWorker backgroundWorker1 = new BackgroundWorker();
            Label label1 = new Label() { Text = "Загрузка" };
            this.Controls.Add(label1);
            backgroundWorker1.DoWork += (s, e) =>
            {
                try
                {
                    e.Result = GetFiles(@"Z:", "*.*").Count;
                }
                catch (Exception err) { e.Result = err.Message; }
            };
            backgroundWorker1.RunWorkerCompleted += (s, e) => label1.Text = e.Result.ToString();
            backgroundWorker1.RunWorkerAsync();
        }
        private List<string> GetFiles(string path, string pattern)
        {
            var files = new List<string>();
            try
            {
                files.AddRange(Directory.GetFiles(path, pattern, SearchOption.TopDirectoryOnly));
                foreach (var directory in Directory.GetDirectories(path))
                    files.AddRange(GetFiles(directory, pattern));
            }
            catch { }
            return files;
        }
    }
}
Так попробуйте, а то тот метод может эксепшены выдавать.
1
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
25.11.2015, 00:31  [ТС] 10
На диске D выдает верное кол-во файлов, но на диске С почему-то выдает число 7 и всё.
С чем это связано? ;(
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
25.11.2015, 00:54 11
Аккаунт в винде администратора? Если нет, то из-за прав. Или может путь криво введен.
1
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
25.11.2015, 00:54  [ТС] 12
- Аккаунт админ
- Путь введен C:
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
25.11.2015, 00:56 13
@"C:\" Так попробуйте.
0
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
25.11.2015, 00:56  [ТС] 14
Прошу простить. Нужно было просто подождать. Он не успевал посчитать файлы) Спасибо еще раз огромное)
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
25.11.2015, 00:56 15
Форум удаляет слэши-оттуда и проблема видимо.
0
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
25.11.2015, 00:59  [ТС] 16
Я пробую сделать поиск по всем дискам. Как сделать сумму найденных файлов?
C#
1
2
3
4
5
6
7
8
9
                DriveInfo[] allDrives = DriveInfo.GetDrives();
                foreach (DriveInfo d in allDrives)
                {
                    try
                    {
                        e.Result = GetFiles(@d.Name, "*.*").Count;
                    }
                    catch (Exception err) { e.Result = err.Message; }
                }
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
25.11.2015, 01:02 17
C#
1
2
3
4
5
6
7
8
9
                DriveInfo[] allDrives = DriveInfo.GetDrives();
                foreach (DriveInfo d in allDrives)
                {
                    try
                    {
                        e.Result = (int)e.Result+ GetFiles(d.Name, "*.*").Count;
                    }
                    catch (Exception err) { e.Result = err.Message; }
                }
Как-то так.
0
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
25.11.2015, 01:05  [ТС] 18
Заданное привидение является недопустимым(
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
25.11.2015, 01:18 19
C#
1
 e.Result = Convert.ToInt32(e.Result)+ GetFiles(d.Name, "*.*").Count;
Так тогда попробуйте. Туплю уже.
1
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
25.11.2015, 01:19  [ТС] 20
Хоть Вы и "тупите", но вы гений) Спасибо)
0
25.11.2015, 01:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2015, 01:19
Помогаю со студенческими работами здесь

количество файлов в папке
Подскажите, пожалуйста, как программно подсчитать сколько файлов находятся в папке?

Количество файлов в папке
есть папка, в ней будут создаваться части архива, тоесть ***part1.rar и т.д. как посчитать...

Количество файлов в папке
Добрый день! Я столкнулся со следующей проблемой - в общем, при помощи folderBrowserDialog я...

Количество файлов в директории
Хочу посчитать сколько файлов изображений формата jpg bmp png лежит в папке изображения есть а...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru