#region 文件夾操作
/// <summary>
/// 選擇路徑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOpenDir_Click(object sender, EventArgs e)
{
// 從工具箱拖入一個FolderBrowserDialog,命名為fbd。除了拖入,還可直接定義
FolderBrowserDialog fbd = new FolderBrowserDialog();
// 設置文件夾選擇框提示文本
fbd.Description = "請選擇一個文件夾:";
// 設置默認位置為桌面
fbd.RootFolder = Environment.SpecialFolder.DesktopDirectory;
// 設置是否顯示“新建文件夾”按鈕
fbd.ShowNewFolderButton = false;
// 設置默認選中的文件夾為本地目錄
fbd.SelectedPath = @"e:\";
// 設置默認選中的文件夾為網絡路徑
//this.fbd.SelectedPath = @"\\192.168.1.1\";
// 顯示對話框,並返回已選中的文件夾
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.tbDir.Text = fbd.SelectedPath;
}
}
/// <summary>
/// 文件夾屬性
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetDirInfo_Click(object sender, EventArgs e)
{
string dirName = this.tbDir.Text;
if (string.IsNullOrEmpty(dirName))
{
this.tbInfo.AppendText("文件夾不能空\r\n");
return;
}
// 檢查文件夾是否存在
if (Directory.Exists(dirName))
{
// 根據路徑獲得文件夾屬性
DirectoryInfo info = new DirectoryInfo(dirName);
this.tbInfo.AppendText(string.Format("完整路徑:{0}\r\n", info.FullName));
this.tbInfo.AppendText(string.Format("獲取目錄的根:{0}\r\n", info.Root));
this.tbInfo.AppendText(string.Format("獲取目錄的父目錄:{0}\r\n", info.Parent));
this.tbInfo.AppendText(string.Format("創建時間:{0}\r\n", info.CreationTime));
this.tbInfo.AppendText(string.Format("最后一次訪問時間:{0}\r\n", info.LastAccessTime));
this.tbInfo.AppendText(string.Format("最后一次寫入時間:{0}\r\n", info.LastWriteTime));
} else
{
this.tbInfo.AppendText(string.Format("文件夾不存在{0}\r\n", dirName));
}
}
/// <summary>
/// 文件夾權限
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetDirSec_Click(object sender, EventArgs e)
{
//取得文件夾的訪問權限
string dirName = this.tbDir.Text;
if (string.IsNullOrEmpty(dirName))
{
this.tbInfo.AppendText("文件夾不能空\r\n");
return;
}
DirectoryInfo dirInfo = new DirectoryInfo(dirName);
// 需引用命名空間System.Security.AccessControl;
// 取得訪問控制列表ACL信息
DirectorySecurity sec = dirInfo.GetAccessControl(AccessControlSections.Access);
foreach (FileSystemAccessRule rule in
sec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
// 文件夾名稱
tbInfo.AppendText(dirName + "\t");
// 取得Windows賬號或sid
tbInfo.AppendText(rule.IdentityReference.Value + "\t");
// 取得文件夾權限
tbInfo.AppendText(rule.FileSystemRights.ToString() + "\r\n");
}
}
/// <summary>
/// 遍歷子文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetDirFiles_Click(object sender, EventArgs e)
{
string dirName = this.tbDir.Text;
if (string.IsNullOrEmpty(dirName))
{
this.tbInfo.AppendText("文件夾不能空\r\n");
return;
}
//遍歷文件夾中的文件
DirectoryInfo info = new DirectoryInfo(dirName);
foreach (FileInfo fInfo in info.GetFiles())
{
this.tbInfo.AppendText(fInfo.FullName + "\r\n");
}
}
/// <summary>
/// 遍歷子文件夾
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetSubDir_Click(object sender, EventArgs e)
{
string dirName = this.tbDir.Text;
if (string.IsNullOrEmpty(dirName))
{
this.tbInfo.AppendText("文件夾不能空\r\n");
return;
}
//遍歷文件夾中的子文件夾
DirectoryInfo info = new DirectoryInfo(dirName);
foreach (DirectoryInfo dInfo in info.GetDirectories())
{
this.tbInfo.AppendText(dInfo.FullName + "\r\n");
}
}
/// <summary>
/// 遍歷全部子文件夾
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGetAllSubDir_Click(object sender, EventArgs e)
{
string dirName = this.tbDir.Text;
if (string.IsNullOrEmpty(dirName))
{
this.tbInfo.AppendText("文件夾不能空\r\n");
return;
}
//使用遞歸方法遍歷文件夾中所有的子文件夾
DirectoryInfo info = new DirectoryInfo(dirName);
foreach (DirectoryInfo dInfo in info.GetDirectories())
{
//ReadDirs(dInfo.FullName);
ReadDirs(dInfo.FullName,0);
this.tbInfo.AppendText(dInfo.FullName + "\r\n");
}
}
private void ReadDirs(string dirName)
{
// 遞歸讀取子文件夾
DirectoryInfo info = new DirectoryInfo(dirName);
foreach (DirectoryInfo dInfo in info.GetDirectories())
{
ReadDirs(dInfo.FullName);
this.tbInfo.AppendText(dInfo.FullName + "\r\n");
}
}
private void ReadDirs(string dirName, int level)
{
// 記錄文件夾讀取深度
level++;
// 當遍歷深度小於設定值時才繼續讀取
if (level < totalLevel)
{
DirectoryInfo info = new DirectoryInfo(dirName);
#region 顯示文件信息
foreach (FileInfo fInfo in info.GetFiles())
{
this.tbInfo.AppendText(fInfo.FullName + "\r\n");
}
#endregion
#region 顯示子文件夾
foreach (DirectoryInfo dInfo in info.GetDirectories())
{
ReadDirs(dInfo.FullName, level);
this.tbInfo.AppendText(dInfo.FullName + "\r\n");
}
#endregion
}
}
/// <summary>
/// 刪除文件夾
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDeleteDir_Click(object sender, EventArgs e)
{
string dirName = this.tbDir.Text;
if (string.IsNullOrEmpty(dirName))
{
this.tbInfo.AppendText("文件夾不能空\r\n");
return;
}
if (Directory.Exists(dirName))
{
if(MessageBox.Show("您確定要刪除指定文件夾嗎?","確認框",
MessageBoxButtons.YesNo,MessageBoxIcon.Question)
== System.Windows.Forms.DialogResult.Yes)
{
Directory.Delete(dirName);
}
}
}
/// <summary>
/// 移動文件夾
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnMoveDir_Click(object sender, EventArgs e)
{
string dirName = this.tbDir.Text;
if (string.IsNullOrEmpty(dirName))
{
this.tbInfo.AppendText("文件夾不能空\r\n");
return;
}
if (Directory.Exists(dirName))
{
if (MessageBox.Show("您確定要移動文件夾嗎?", "確認框",
MessageBoxButtons.YesNo, MessageBoxIcon.Question)
== System.Windows.Forms.DialogResult.Yes)
{
//源路徑和目標路徑必須具有相同的根。移動操作在卷之間無效
Directory.Move(dirName, @"C:\Users\Dai\Desktop\截圖222");
}
}
}
/// <summary>
/// 創建文件夾
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCreateDir_Click(object sender, EventArgs e)
{
// appPath = System.Windows.Forms.Application.StartupPath + "\\";
string dirName = appPath + DateTime.Now.ToString("yyyyMMddHHmmss");
Directory.CreateDirectory(dirName);
this.tbInfo.AppendText(string.Format("當前工作目錄:{0}\r\n", Directory.GetCurrentDirectory()));
Directory.SetCurrentDirectory(@"c:\");
Directory.CreateDirectory(DateTime.Now.ToString("yyyyMMddHHmmss"));
this.tbInfo.AppendText(string.Format("已創建文件夾{0}\r\n", dirName));
}
/// <summary>
/// 特殊文件夾路徑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnFolderPath_Click(object sender, EventArgs e)
{
//取得特殊文件夾的絕對路徑
this.tbInfo.AppendText(string.Format("特殊文件夾路徑\r\n桌面:{0}\r\n", Environment.GetFolderPath(Environment.SpecialFolder.Desktop)));
this.tbInfo.AppendText(string.Format("收藏夾:{0}\r\n", Environment.GetFolderPath(Environment.SpecialFolder.Favorites)));
this.tbInfo.AppendText(string.Format("我的文檔:{0}\r\n", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)));
this.tbInfo.AppendText(string.Format("最近使用的文檔:{0}\r\n", Environment.GetFolderPath(Environment.SpecialFolder.Recent)));
//取得特殊文件夾的絕對路徑
//桌面
Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
//收藏夾
Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
//我的文檔
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
//最近使用的文檔
Environment.GetFolderPath(Environment.SpecialFolder.Recent);
}
/// <summary>
/// 重命名
/// </summary>
void RenameDirectory()
{
// 重命名文件夾
Computer myPC = new Computer();
string sourceDirName = @"C:\Users\Dell\Desktop\截圖";
string newDirName = @"截圖";
//必須是名稱,而不是絕對路徑
myPC.FileSystem.RenameDirectory(sourceDirName, newDirName);
myPC = null;
}
private void btnRenameDir_Click(object sender, EventArgs e)
{
RenameDirectory();
}