Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изменения директории и вывод дерева директорий

284
14 мая 2007 года
michael_is_98
587 / / 25.02.2005
Ребята, нужна следующая программка: пользователь задает путь (например "e:\mailboxes"), программа выводит дерево каталогов и подкаталогов, начинающихся с заданного пути.
А также автоматически обновляет это дерево при создании, удалении файла, директории, а также при изменении размера файла.
Возможно ли это сделать в .NET?
В каком компоненте осуществляется вывод дерева?
395
14 мая 2007 года
RelB
367 / / 09.11.2002
Цитата: michael_is_98
Ребята, нужна следующая программка: пользователь задает путь (например "e:\mailboxes"), программа выводит дерево каталогов и подкаталогов, начинающихся с заданного пути.
А также автоматически обновляет это дерево при создании, удалении файла, директории, а также при изменении размера файла.
Возможно ли это сделать в .NET?
В каком компоненте осуществляется вывод дерева?

А при чем здесь .NET? Для .NET есть соответвующий раздел форума. Что же касается вывода дерева директорий, то я бы юзал API-шную функцию SHBrowseForFolder

284
14 мая 2007 года
michael_is_98
587 / / 25.02.2005
Да, .NET здесь не причем.
Здесь нужна структура, содержащая информацию о дереве каталогов начиная с заданного каталога.
Диалог дерева директорий здесь не причем - если точнее нужет тот код, который это дерево строит начиная с заданного пути
9.2K
20 мая 2007 года
llllDeadMan
32 / / 28.11.2005
А чем дерево каталогов отличается от любого другого дерева? Создавай дерево, корнем дерева будет путь к начальной папке, дальше сканируй каждую папку на предмет вложенных (не знаю как на .NET, но на WinApi можно через FindFirstFile/FindNextFile), при нахождении таковых добавляй новые вершины к дереву с названиями этих папок. Лучше использовать рекурсию.
284
21 мая 2007 года
michael_is_98
587 / / 25.02.2005
Два вопроса возникают:
1) какой структурой пользоваться (желательно из библиотеки STL)
2) как обойти рекурсию (потому что при глубоких вхождениях рано или поздно произойдет переполение стека)

В WinRAR это довольно шустро работает при определении списка файлов для архивации ...
9.2K
21 мая 2007 года
llllDeadMan
32 / / 28.11.2005
1) Можно создать самому, это не сложно, но дожны быть и готовые структуры/классы, поищи в нете;
2) Не будет у тебя переполнения стека, если все делать правильно.
Кстати совсем забыл написать про автообновление списка в предыдущем посте, ReadDirectoryChangesW тебе в помощь, в MSDN'е все подробно описано.
1.8K
22 мая 2007 года
ViToBrother
149 / / 13.05.2007
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <iostream.h>
#include <stdio.h>
#include <io.h>
#include <time.h>
#include <direct.h>
#include <conio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>


char path[256]="C:";
static int entry;
static int foldercount;

void Explore(void);
void CreateDesktopIniFile(void);


int main(int argc, char* argv[])
{
Explore();
return 0;
}



void Explore(void)
{
entry++;
char temp[256];
_finddata_t fileinfo;
strcat(path,"\\*");
long hnd;
if ((hnd=_findfirst(path, &fileinfo))!=-1) {
do {
if(fileinfo.name[0]=='.') continue;
if (fileinfo.attrib & _A_SUBDIR) {
strcpy(path+strlen(path)-1,fileinfo.name);
chdir(path);
cout<<path<<endl;
foldercount++;
Explore();
continue;
}
strcpy(temp,path);
temp[strlen(path)-2]='\0';
strcat(temp,"\\");
strcat(temp,fileinfo.name);
cout << temp << "\\"<< fileinfo.name<<endl;;

strcpy(temp,path);
temp[strlen(path)-2]='\0';
cout << temp << "\\"<< fileinfo.name<<endl;;
} while (_findnext(hnd,&fileinfo)==0);
}
entry--;
if (entry==0) {
int ii;
cin >> ii;
return;
}
path[strlen(path)-2]='\0';
int n=strlen(path)-1;
while (path[n]!='\\') n--;
path[n]='\0';
chdir(path);
path[n++]='\\';path[n++]='*';path[n]='\0';
return;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог