Получить все текущие имена файлов в каталоге и записать его в консоли C # - PullRequest
0 голосов
/ 15 ноября 2009

Я пишу программу, для которой требуется возможность перечисления всех установленных приложений, и она сделает это, перечислив все деинсталляторы для нее в определенном каталоге. Этот код не работает, и каталог создан, и в каталоге есть файлы

if (startarg.Contains("-il") == true)
            {
                //Lists all installed programs here
                DirectoryInfo uninstalldir = new DirectoryInfo("Uninstallers");
                FileInfo[] UninstallerFiles = uninstalldir.GetFiles();
                Console.WriteLine("Listing all applications installed with Simtho");
                foreach (FileInfo files in UninstallerFiles)
                {
                    Console.WriteLine(files.Name.ToString());
                }

Я знаю, что ему нужен полный путь, но я не знаю полного пути, поэтому он должен быть переменной, как я могу заставить что-то подобное работать?

DirectoryInfo uninstalldir = new DirectoryInfo(Directory.GetCurrentDirectory + "\" + "Uninstallers");

Ответы [ 4 ]

3 голосов
/ 15 ноября 2009

Я считаю, что для объекта "DirectoryInfo" необходим полный путь для поиска папки удаления, например: "C: ...."

2 голосов
/ 15 ноября 2009

Держу пари, что по какой-то причине вы в конце концов передаете неправильный путь конструктору DirectoryInfo. Для отладки я бы получил полный путь к каталогу, используя следующий код, и проверил, действительно ли он ссылается на нужный путь:

Path.Combine(Directory.GetCurrentDirectory(), "Uninstallers");
1 голос
/ 15 ноября 2009

Попробуйте

DirectoryInfo uninstalldir = new DirectoryInfo(Path.GetFullPath("Uninstallers"));
1 голос
/ 15 ноября 2009

Этот код работает, пожалуйста, используйте это:

class Program
{
    static void Main(string[] args)
    {
        Program p = new Program();
        p.getAllFiles(@"D:\Old_Desktop");

    }

    public void getAllFiles(string directoryPath)
    {
            DirectoryInfo dirInfo= new DirectoryInfo(directoryPath);
            FileInfo[] files= dirInfo.GetFiles();
            foreach(FileInfo f in files)
            {
                Console.WriteLine(f.FullName);
            }

            Console.ReadLine();
    }

}

И да, каталог должен быть указан как полный путь, как указано в предыдущих ответах и ​​в моем фрагменте кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...