using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace FileCounter
{
public partial class FileCounter : Form
{
private int counter = 0;
public FileCounter()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void txtFolderPath_TextChanged(object sender, EventArgs e)
{
}
private void btnOpenFolderDlg_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
folderBrowserDialog.SelectedPath = @"C\";
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
txtFolderPath.Text = folderBrowserDialog.SelectedPath;
}
}
private void btnFileCount_Click(object sender, EventArgs e)
{
//파일을 찾아야 폴더 선택 여부 확인
if (txtFolderPath.Text == "" || txtFolderPath.Text.Length < 1)
{
MessageBox.Show("대상 폴더를 선택하세요. !!");
return;
}
//찾아야 할 파일 확장자 입력 여부 확인
if (txtFileExt.Text == "" || txtFileExt.Text.Length < 1)
{
MessageBox.Show("파일 확장자를 입력하세요. !!");
return;
}
lbCount.Text = "";
counter = 0;
//Root폴더 아래의 파일 검색
RootSearchFileExtCounter(txtFolderPath.Text, txtFileExt.Text);
//하위 폴더 아래의 파일 검색
DirSearchFileExtCounter(txtFolderPath.Text, txtFileExt.Text);
lbCount.Text = "" + counter;
}
private void btnCancel_Click(object sender, EventArgs e)
{
//종료
this.Close();
}
//Root폴더 아래의 파일을 검색
void RootSearchFileExtCounter(string sDir, string sExt)
{
//입력된 파일 확장자에서 순수한 확장자만 추출
string strExt = sExt;
if (sExt.IndexOf("*") > -1) strExt = strExt.Replace("*", "");
if (sExt.IndexOf(".") > -1) strExt = strExt.Replace(".", "");
//검색을 위한 패턴 생성
string searchPattern = "*." + strExt;
string[] rootFileEntries = Directory.GetFiles(sDir, searchPattern);
foreach (string rootFileName in rootFileEntries)
{
//순수 확장자가 파일명의 끝에 있는지 체크해서 카운트.
if (rootFileName.EndsWith(strExt))
{
counter = counter + 1;
}
}
}
void DirSearchFileExtCounter(string sDir, string sExt)
{
string strExt = sExt;
if (sExt.IndexOf("*") > -1) strExt = strExt.Replace("*", "");
if (sExt.IndexOf(".") > -1) strExt = strExt.Replace(".", "");
string searchPattern = "*." + strExt;
try
{
//Root폴더 아래의 하위 폴더 갯수 만큼 Looping
foreach (string d in Directory.GetDirectories(sDir))
{
//searchPattern에 맞는 파일 목록을 가져온다.
string[] searchFileEntries = Directory.GetFiles(d, searchPattern);
//가져온 파일 목록만큼 Looping
foreach (string sFileName in searchFileEntries)
{
//순수 확장자가 파일명의 끝에 있는지 체크해서 카운트.
if (sFileName.EndsWith(strExt))
{
counter = counter + 1;
}
}
//하위 폴더 검색을 위한 재귀호출
DirSearchFileExtCounter(d, searchPattern);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}
}
}
댓글 없음:
댓글 쓰기