Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 1
Регистрация: 08.06.2009
Сообщений: 6

Сохранить содержимое диска в (HTML-)файл в иерархическом виде (TreeView)

06.06.2010, 11:48. Показов 2342. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа должна просканировать диск и вывести содержимое указанного каталога в HTML-файл в иерархическом виде.

Для построения дерева использовал элемент управления TreeView. В ListView отображается содержимое выбранного каталога. Выбор каталога для сохранения думаю указывать с помощью CheckBoxes.

Подскажите пожалуйста, каким образом можно произвести сохранение дерева в (HTML-)файл?

Спасибо.

Код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace DirectoryLister
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            DriveTreeInit(); //инициализация дерева
 
            //получаем список логических дисков, имеющихся в системе
            string[]drivesArray = Directory.GetLogicalDrives();
 
            foreach(string s in drivesArray)
                Console.Write("{0} ", s);
 
            //запись в массив diArray информации обо всех
            //подкаталогах корневого каталога диска C
            DirectoryInfo[] diArray;
            string fullPath = "C:\\";
 
            DirectoryInfo di = new DirectoryInfo(fullPath);
       
            try
            {
                diArray = di.GetDirectories();
            }
            catch
            {
                return;
            }
 
        }
 
        string fullPath; //в этом поле будем хранить полный путь к узлу дерева
        
        //инициализация окна древовидного списка дисковых устройств
        private void DriveTreeInit()
        {
            string[] drivesArray = Directory.GetLogicalDrives();
 
            treeView1.BeginUpdate();
            treeView1.Nodes.Clear();
 
            //заполнение дерева происходит в цикле
            foreach (string s in drivesArray)
            {
                TreeNode drive = new TreeNode(s, 0, 0);
                treeView1.Nodes.Add(drive);
 
                GetDirs(drive);
            }
            
            treeView1.EndUpdate();
        }
 
        //получение списка каталогов
        private void GetDirs(TreeNode node)
        {
            DirectoryInfo[] diArray;
 
            node.Nodes.Clear();
 
            string fullPath = node.FullPath;
            DirectoryInfo di = new DirectoryInfo(fullPath);
 
            try
            {
                diArray = di.GetDirectories(); //сохраняем содержимое каталога
            }
            catch
            {
                return;
            }
 
            //содержимое массива diArray используется
            //для заполнения узла дерева содержимым каталога
            foreach (DirectoryInfo dirinfo in diArray)
            {
                TreeNode dir = new TreeNode(dirinfo.Name, 1, 1);
                node.Nodes.Add(dir);
            }
        }
 
        //обработчик события раскрытия узла дерева
        private void treeView1_OnBeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            treeView1.BeginUpdate();
 
            foreach (TreeNode node in e.Node.Nodes)
            {
                GetDirs(node);
            }
 
            treeView1.EndUpdate();
        }
 
        //обработчик события, наполнение списка ListView
        private void treeView1_OnAfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode selectedNode = e.Node; //ссылка на выделенный узел дерева
            fullPath = selectedNode.FullPath; //полный путь к выделенному узлу
 
            //получаем списки всех файлов и каталогов,
            //располагающихся в каталоге, выделенном в дереве
            DirectoryInfo di = new DirectoryInfo(fullPath);
            FileInfo[] fiArray;
            DirectoryInfo[] diArray;
 
            try
            {
                fiArray = di.GetFiles(); //перечень файлов
                diArray = di.GetDirectories(); //перечень каталогов
            }
            catch
            {
                return;
            }
 
            listView1.Items.Clear();
 
            //наполнение списка ListView именами каталогов
            foreach (DirectoryInfo dirInfo in diArray)
            {
                ListViewItem lvi = new ListViewItem(dirInfo.Name); //создаем элемент списка
                lvi.SubItems.Add("0"); //атрибут "Размер" = 0
                lvi.SubItems.Add(dirInfo.LastWriteTime.ToString()); //атрибут "Изменен"
                lvi.ImageIndex = 0; //индекс значка
 
                listView1.Items.Add(lvi); //добавление в список
            }
 
            //наполнение списка ListView именами файлов
            foreach (FileInfo fileInfo in fiArray)
            {
                ListViewItem lvi = new ListViewItem(fileInfo.Name); //создаем элемент списка
                lvi.SubItems.Add(fileInfo.Length.ToString()); //атрибут "Размер"
                lvi.SubItems.Add(fileInfo.LastWriteTime.ToString()); //атрибут "Изменен"
 
                //определяем тип текущего файла
                string filenameExtension =
                  Path.GetExtension(fileInfo.Name).ToLower();
 
                //в соответствии с типом выбираем значок
                switch (filenameExtension)
                {
                    case ".com":
                        {
                            lvi.ImageIndex = 2;
                            break;
                        }
                    case ".exe":
                        {
                            lvi.ImageIndex = 2;
                            break;
                        }
                    case ".hlp":
                        {
                            lvi.ImageIndex = 3;
                            break;
                        }
                    case ".txt":
                        {
                            lvi.ImageIndex = 4;
                            break;
                        }
                    case ".doc":
                        {
                            lvi.ImageIndex = 1;
                            break;
                        }
                    case ".docx":
                        {
                            lvi.ImageIndex = 1;
                            break;
                        }
                    case ".jpg":
                        {
                            lvi.ImageIndex = 6;
                            break;
                        }
                    case ".bmp":
                        {
                            lvi.ImageIndex = 6;
                            break;
                        }
                    case ".avi":
                        {
                            lvi.ImageIndex = 7;
                            break;
                        }
                    case ".wmv":
                        {
                            lvi.ImageIndex = 7;
                            break;
                        }
                    case ".mp3":
                        {
                            lvi.ImageIndex = 8;
                            break;
                        }
                    case ".flac":
                        {
                            lvi.ImageIndex = 8;
                            break;
                        }
                    default:
                        {
                            lvi.ImageIndex = 5;
                            break;
                        }
                }
 
                listView1.Items.Add(lvi); //добавление в список
            }
        }
 
        //меню -> файл -> сохранить
        private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
        }        
        
        //меню -> файл -> выход
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
           Application.Exit();
        }
 
        //меню -> справка -> содержание
        private void содержаниеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                Process SysInfo = new Process();
                SysInfo.StartInfo.ErrorDialog = true;
                SysInfo.StartInfo.FileName = "Spravka.txt";
                SysInfo.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }        
        
        //меню -> справка -> о программе
        private void опрограммеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form dlgAbout = new AboutBox1();
            dlgAbout.ShowDialog();
        }
 
    }
}
Скриншот:
Миниатюры
Сохранить содержимое диска в (HTML-)файл в иерархическом виде (TreeView)  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2010, 11:48
Ответы с готовыми решениями:

Как сериализовать элемент TreeView что бы сохранить его содержимое в XML файл?
Здравствуйте, как сохранить дерево TreeView? Возможно ли сохранить xaml код TreeView, а потом его загружать? Просто я делал считывание...

Сохранить в файл содержимое тегов <a> данного html файла
Дан текст HTML-страницы. Необходимо выделить текст внутри всех тегов a: (т.е. текст заключенный между &lt;a...&gt; и &lt;/a&gt;), вывести...

Как сохранить содержимое TreeView ?
Кто нибудь знает, как рационально сохранить содержимое TreeView в файл?

1
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.06.2010, 13:13
Цитата Сообщение от GenD0S Посмотреть сообщение
Подскажите пожалуйста, каким образом можно произвести сохранение дерева в (HTML-)файл?
Ни разу не делал, но думаю что нужно писать какую-то рекурсивную функцию для прохода по всем узлам дерева. А HTML-теги, будут зависеть от того, в каком виде ты хочешь это видеть (списки, таблицы и т.д.).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2010, 13:13
Помогаю со студенческими работами здесь

Как сохранить содержимое объекта RichTextBox в виде графической информации?
Здравствуйте. Подскажите, как можно сохранить содержимое объекта RichTextBox в виде графической информации (файл или буфер обмена)....

Как правильно сделать сортировку документов в иерархическом виде?
У меня есть иерархический вид - документы, ответные документы и т.д... Теперь представим, что для навигации используется не вид, а...

Как в JS получить содержимое HTML файла в виде строки
Здравствуйте. Как можно в JS получить содержимое HTML файла в текстовом формате. В этом примере я HTML код пишу сразу в response.end....

Сохранить содержимое формы в файл
привет всем. как сохранить содержимое некоторой формы в текстовый файл на сервере? пример: есть форма и под ней кнопка. пользователь...

Сохранить содержимое EditorGadget в файл
Здравствуйте! Извините если в поиске не нашел, но у меня вопрос. Как содержимое EditorGadget сохранить в файл .txt?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru