Загрузка...

File dropper across all folders

Thread in C# created by Farly May 4, 2022. (bumped May 4, 2022) 428 views

  1. Farly
    Farly Topic starter May 4, 2022 اللعنة عليك 177 Jun 5, 2020
    [IMG]
    Код прост и проверен временем, надежный как швейцарские часики
    Зачем и для чего это обьяснять не буду, кому надо тот поймет, для использования в своих образовательных целях
    :smile_detective:

     
  2. JanitorHvhboom
    JanitorHvhboom May 4, 2022 хочу работать. 32 Apr 4, 2018
    Бро скинь под хайд, очень интересно.
     
  3. wDude
    wDude May 4, 2022 Боюсь быть не там и не тем. 3666 Aug 14, 2017
    А зачем так всё усложнять, если банально можно просто получить список всех директорий на всех дисках, условно так
    C#
    List<string> AllDirectories = new List<string>();
    foreach (var Drive in DriveInfo.GetDrives())
    {
    foreach (string dir in Directory.GetDirectories(Drive.Name(), "*", SearchOption.AllDirectories))
    AllDirectorys.Add(Directory);
    }
    Это без всякого упрощения с использованием Linq и тп, а после просто пройтись по каждой директории в аналогичном цикле с try { } catch { }, внутри которого просто добавить создание/дpоп нужного файла.
    По итогу файл будет создан во всех директориях + если нет прав на директорию, то всё будет ок (пропустит папку) и он продолжит создавать.

    Я не понимаю, зачем столько наворотов с WinApi, требую объяснений :interesting:
     
    1. View previous comments (8)
    2. wDude
      mikuzeboka, все, кажется понял про что речь, ты прав кстати, но я проверю позднее.
    3. wDude
      mikuzeboka, проверил, да, ты абсолютно прав, но даже если сделать рекурсивный обход отдельно - это явно выйдет меньше, чем то, что написано в самой теме.
    4. mikuzeboka
      wDude, вот метод с рекурсией. 12 строк
      Code
      private List<string> GetCommonEntriesOnFolder(string path)
      {
      List<string> entries = new List<string>();
      try
      {
      if(path.Count(z => z == '\\') > 1 && FileAttributes.System == (File.GetAttributes(path) & FileAttributes.System))
      return entries;
      entries = Directory.GetFiles(path).ToList();
      Directory.GetDirectories(path).ToList().ForEach(z => entries.AddRange(GetCommonEntriesOnFolder(z)));
      } catch { }
      return entries;
      }
Top
Loading...