Member 13864698 Ответов: 2

C# программа, которая читает все каталоги и файлы на компьютере и записывает их в базу данных


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

* база данных должна содержать имя сущностей,дату создания и структуру каталогов.
* запросите самый длинный путь из вашей базы данных.

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

using System;
using System.IO;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = "E:\\ExampleFolder";             
            DirectoryInfo dir = new DirectoryInfo(path);
            Console.WriteLine("File Name,Size,Creation Date and Time");
            Console.WriteLine("=============================================================");
            foreach (FileInfo flInfo in dir.GetFiles())
            {
                String name = flInfo.Name;
                long size = flInfo.Length;
                DateTime creationTime = flInfo.CreationTime;
                Console.WriteLine("{0, -30:g} {1,-12:N0} {2} ", name, size, creationTime);
            }
            Console.ReadLine();
        }
    }
}

2 Ответов

Рейтинг:
5

RickZeeland

Не файловый, но может представлять для вас интерес: Приложение для аудита ПК на языке Си#[^]


Рейтинг:
15

OriginalGriff

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

Хотя Каталог.Заражен[^] имеет перегрузку, которая позволяет возвращать все файлы в папке и все ее подпапки, она, скорее всего, потерпит неудачу, когда встретится с папкой, на которую у нее нет разрешения, поэтому я бы использовал рекурсивный метод для чтения всех файлов в папке, а затем вызывал бы себя для каждой подпапки. Таким образом, неудача не тратит впустую всю работу до сих пор. Красиво и просто: всего десяток строк кода!


Member 13864698

не могли бы вы, пожалуйста, показать, как это сделать..все еще не получается

OriginalGriff

Какую роль ты не получаешь?
Как далеко ты продвинулся?

Member 13864698

пример пространства имен
{
классная программа
{
static void Main(string[] args)
{
строка mydocpath=Environment.GetFolderPath(Environment.Специальная папка.Мои документы);
Проверьте новое окно инструментов();
foreach (строка txtName в каталоге.Заражен(@"D:\Test","*.тхт"))
{
использование (StreamReader sr = new StreamReader(txtName))
{
sb.AppendLine(txtName.Метод toString());
sb.AppendLine("= = = = = =");
sb.Append(sr.ReadToEnd());
СБ.AppendLine();
СБ.AppendLine();
}
}
используя (модулю записи StreamWriter Файл=Новый модулю записи StreamWriter(mydocpath + @"\AllTxtFiles.txt"))
{
выходной_файл.Писать(СБ.Метод toString());
}
}
}
}

OriginalGriff

Так... значит, ты проигнорировал все, что я сказал?