디렉토리 선택하면 파일(하위항목)으로 열거됨.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO; //중요!!!!!!!!!!!
using System.Text;
using System.Windows.Forms;
namespace 기말고사_공부하기
{
public partial class Form1 : Form
{
public DirectoryInfo dinfo;
public DirectoryInfo[] dir;
public int dir_count;
string fname;
public Form1() //생성자
{
InitializeComponent();
dir_count = 0; //생성자에서 값 선언
}
private void button1_Click(object sender, EventArgs e) //열기 버튼 클릭시
{
openFileDialog1.ShowDialog();
dinfo = new DirectoryInfo(openFileDialog1.FileName);
dinfo = dinfo.Parent;
dir = dinfo.GetDirectories();
dir_count = dir.Length + 1;
listView1.Items.Clear();
ListViewItem item = new ListViewItem("..", 0);
item.SubItems.Add("");
item.SubItems.Add("");
item.SubItems.Add("");
listView1.Items.Add(item);
foreach(DirectoryInfo d in dir)
{
ListViewItem item1 = new ListViewItem(d.Name.ToString(), 0);
item1.SubItems.Add(d.Attributes.ToString());
item1.SubItems.Add("");
item1.SubItems.Add(d.CreationTime.ToString());
listView1.Items.Add(item1);
}
FileInfo[] files = dinfo.GetFiles();
foreach(FileInfo f in files)
{
ListViewItem item2 = new ListViewItem(f.Name.ToString(), 1);
item2.SubItems.Add(f.Attributes.ToString());
item2.SubItems.Add(f.Length.ToString());
item2.SubItems.Add(f.CreationTime.ToString());
listView1.Items.Add(item2);
}
Text = dinfo.FullName.ToString();
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void listView1_Click(object sender, EventArgs e)
{
int index = listView1.FocusedItem.Index;
if(index >= dir_count)
{
MessageBox.Show("파일 선택함");
return;
}if(index != 0)
{
dinfo = dir[index - 1];
}
else
{
if(dinfo.Parent == null)
{
MessageBox.Show("루트 디렉토리 입니다.");
return;
}dinfo = dinfo.Parent;
}
listView1.Items.Clear();
ListViewItem item = new ListViewItem("..", 0);
item.SubItems.Add("");
item.SubItems.Add("");
item.SubItems.Add("");
listView1.Items.Add(item);
dir = dinfo.GetDirectories();
dir_count = dir.Length + 1;
foreach (DirectoryInfo d in dir)
{
ListViewItem item1 = new ListViewItem(d.Name.ToString(), 0);
item1.SubItems.Add(d.Attributes.ToString());
item1.SubItems.Add("");
item1.SubItems.Add(d.CreationTime.ToString());
listView1.Items.Add(item1);
}
FileInfo[] files = dinfo.GetFiles();
foreach (FileInfo f in files)
{
ListViewItem item2 = new ListViewItem(f.Name.ToString(), 1);
item2.SubItems.Add(f.Attributes.ToString());
item2.SubItems.Add(f.Length.ToString());
item2.SubItems.Add(f.CreationTime.ToString());
listView1.Items.Add(item2);
}
this.Text = dinfo.FullName.ToString();
}
private void toolStripMenuItem1_Click(object sender, EventArgs e) //복사
{
fname = this.Text + "||" + listView1.FocusedItem.Text; //선택한 아이템을 복사할떄 || 문자와 함께 복사됨
}
private void toolStripMenuItem2_Click(object sender, EventArgs e) //붙여넣기
{
try
{
FileInfo vf = new FileInfo(fname); //선택한 아이템(파일)의(복사한) 정보 구함
FileInfo cf = vf.CopyTo(this.Text + "||" + vf.Name.ToString(), true);
ListViewItem item = new ListViewItem(cf.Name.ToString(), 1);
item.SubItems.Add(cf.Attributes.ToString());
item.SubItems.Add(cf.Length.ToString());
item.SubItems.Add(cf.CreationTime.ToString());
listView1.Items.Add(item);
}
catch //실패시 오류 알림 문장
{
MessageBox.Show("파일 붙여 넣기 실패");
}
}
private void toolStripMenuItem3_Click(object sender, EventArgs e) //지우기
{
if(listView1.FocusedItem.Index == 0)
{
MessageBox.Show("부모 디렉토리 삭제 불가");
return;
}
if(listView1.FocusedItem.Selected == true)
{
int i;
FileInfo[] files = dinfo.GetFiles();
i = int.Parse(listView1.FocusedItem.Index.ToString());
DialogResult dr = MessageBox.Show("정말 삭제하시겠습니까","삭제",MessageBoxButtons.YesNo);
if(dr == DialogResult.Yes)
{
files[i - dir_count].Delete();
listView1.FocusedItem.Remove();
}
}
}
}
}