Список каталогов и файлов Dropbox в C#
Чтобы использовать эту услугу, Dropbox создает папку и автоматически синхронизирует ее с удаленным местоположением через Интернет. Вы можете предоставить другим пользователям доступ к подпапкам, чтобы они могли совместно использовать файлы, которые вы там помещали. Это довольно простой способ поделиться фотографиями семьи, деловыми файлами или фотографиями lolcats.
Недавно кто-то спросил меня, как программа C# может перечислить ваши файлы Dropbox. Поскольку Dropbox синхронизирует файлы в папке, это на самом деле довольно просто. Вы просто перечисляете файлы в этой папке. Единственные реальные трюки - найти эту папку и перечислить ее файлы и подкаталоги в элементе управления TreeView. И даже это не так уж сложно.
Когда запускается пример программы, он использует следующий код для отображения местоположения папки Dropbox по умолчанию в текстовом поле.
// Установите каталог Dropbox по умолчанию. private void Form1_Load(object sender, EventArgs e) { string home = Environment.GetEnvironmentVariable("USERPROFILE"); txtStart.Text = Path.Combine(home, "Dropbox"); }
Этот код использует GetEnvironmentVariable для чтения переменной окружения USERPROFILE. Это должно вернуть «домашний» каталог пользователя, как в C: \ Users \ Rod.
Затем код использует Path.Combine для привязки к Dropbox. Метод Path.Combine автоматически добавляет разделитель каталога, если это необходимо (в этом примере), чтобы получить результат, похожий на C: \ Users \ Rod \ Dropbox. р>
Вы можете редактировать каталог в текстовом поле, если это необходимо. Затем нажмите кнопку «Поиск», чтобы выполнить следующий код.
private void btnSearch_Click(object sender, EventArgs e) { trvFiles.Nodes.Clear(); SearchDir(trvFiles.Nodes, txtStart.Text); } // Список файлов и подкаталогов этого каталога. private void SearchDir(TreeNodeCollection nodes, string dir_name) { TreeNode dir_node = nodes.Add(dir_name); foreach (string filename in Directory.GetFiles(dir_name)) dir_node.Nodes.Add(filename); foreach (string subdir in Directory.GetDirectories(dir_name)) SearchDir(dir_node.Nodes, subdir); }
Обработчик событий Click кнопки поиска <) очищает TreeView программы, а затем вызывает SearchDir, передавая ему TreeView control Nodes и имя папки Dropbox.
Метод SearchDir рекурсивно ищет указанный каталог и добавляет файлы, которые он находит в коллекцию nodes, принимает в качестве параметра.
Метод начинается с добавления каталога, который он ищет в коллекцию nodes. Он сохраняет возвращенный объект TreeNode, который представляет каталог в коллекции.
Далее код использует Directory.GetFiles, чтобы перечислить файлы в каталоге и добавить их в каталог TreeNode.
.
Метод заканчивается с помощью Directory.GetDirectories, чтобы перечислить подкаталоги каталога и рекурсивно вызвать себя для их поиска.