/*
In this example, we are getting all folders, subfolders, and folders within
subfolders. Then we can load them into any control.
*/
using
System;
using
System.Collections.Generic;
using
System.IO;
using
System.Web.UI;
namespace
StrongTypes
{
public
class
FolderExample
{
private
List
<
string
> ListFolders =
new
List
<
string
>();
public
void
PopulateFolders(
string
strFolderLocation,
Control
ctrl)
{
LoadFolders(strFolderLocation);
foreach
(
string
str
in
ListFolders)
{
//Add code here to add folders and subfolders to Control
}
}
private
void
LoadFolders(
string
strFolderLocation)
{
DirectoryInfo
dir =
null
;
try
{
dir =
new
DirectoryInfo
(strFolderLocation);
FileSystemInfo
[] info = dir.GetFileSystemInfos();
foreach
(
FileSystemInfo
fsi
in
info)
{
if
(fsi
is
DirectoryInfo
)
{
ListFolders.Add(fsi.FullName);
}
AddDirectoriesToList(info);
}
}
catch
{
if
(strFolderLocation ==
null
)
{
throw
new
NullReferenceException
(
"The property FileLocation cannot be null"
);
}
if
(!(dir.Exists))
{
throw
new
DirectoryNotFoundException
(
"The directory you are trying to search does not exist."
);
}
}
}
private
void
AddDirectoriesToList(
FileSystemInfo
[] info)
{
foreach
(
FileSystemInfo
fsi
in
info)
{
if
(fsi
is
DirectoryInfo
)
{
if
(!(ListFolders.Contains(fsi.FullName)))
{
ListFolders.Add(fsi.FullName);
}
DirectoryInfo
dir = (
DirectoryInfo
)fsi;
AddDirectoriesToList(dir.GetFileSystemInfos());
}
}
}
}
}