写好的资源链接 (1积分)http://download.csdn.net/detail/give_me_energy/9537598 |
操作系统文档 |
|
|
孙飞 201300*00*** |
2016/5/26 |
姓名:孙飞
学号:201300*00***
专业:软件工程
班级:一班
手机:***********
题目:文件的操作
1属性窗口:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FileExplorer;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public static string oldname= null;//静态变量,由rename.cs调用,重命名时获取原名,后边还有一个静态方法,是rename调用form1的刷新方法的静态操作。
privatestring currentPath ="";//当前路径
privatestring[] sources =newstring[100]; //复制文件的源路径
privatebool IsMove =false; //是否移动
publicForm1()
{
InitializeComponent();
}
//列出磁盘
privatevoid ListDrivers()
{
treeView1.Nodes.Clear();
listView1.Items.Clear();
currentPath = "";
toolStripComboBox1.Text =currentPath;
DriveInfo[]drivers =DriveInfo.GetDrives();//检索计算机上的所有逻辑驱动器的驱动器名称。
//列表列出每一个驱动器
for(int i = 0; i < drivers.Length; i++)
{
DriveInfodriver = drivers[i];
TreeNodenode = treeView1.Nodes.Add(driver.Name);//定义一个TreeNode节点类型对象,添加treeView1控件的根节点Nodes,也就是add的driver.name
ListViewItemitem = listView1.Items.Add(driver.Name);//先把driver.name加到listview1中,然后把listview1的条目添加到
item.Name = driver.Name;
//判断驱动器类型,用不同图标显示
switch(driver.DriveType)
{
caseDriveType.CDRom: //光驱
{
node.ImageIndex =1;
node.SelectedImageIndex = 1;
item.ImageIndex =1;
break;
}
default: //默认,显示为磁盘图标
{
node.ImageIndex = 0;
node.SelectedImageIndex = 0;
item.ImageIndex =0;
break;
}
}
}
foreach(TreeNode nodeintreeView1.Nodes)
{
NodeUpdate(node);//更新结点。
}
}
//更新结点(列出当前目录下的子目录,在左侧栏)
privatevoid NodeUpdate(TreeNodenode)
{
try
{
node.Nodes.Clear();
DirectoryInfodir =new DirectoryInfo(node.FullPath);//用于创建、移动和枚举目录和子目录的实例方法
DirectoryInfo[]dirs = dir.GetDirectories();//查看目录的子目录。
foreach(DirectoryInfo dindirs)
{
node.Nodes.Add(d.Name);//将其子目录录入传进来的node中,也就是treeView1.Nodes中
}
}
catch
{
}
}
//更新列表(列出当前目录下的目录和文件)
public void ListUpdate(stringnewPath)
{
if(newPath == "")
ListDrivers();
else
{
try
{
DirectoryInfocurrentDir =new DirectoryInfo(newPath);
DirectoryInfo[]dirs = currentDir.GetDirectories();//获取目录
FileInfo[]files = currentDir.GetFiles(); //获取文件
//删除ImageList中的程序图标
foreach(ListViewItem iteminlistView1.Items)
{
if (item.Text.EndsWith(".exe")) //是程序
{
imageList2.Images.RemoveByKey(item.Text);
imageList3.Images.RemoveByKey(item.Text);
}
}
listView1.Items.Clear();
//接下来是listview列出的项,先列出文件夹,在列出文件
//列出文件夹
foreach(DirectoryInfo dirindirs)
{
ListViewItem dirItem = listView1.Items.Add(dir.Name, 2);//文件名
dirItem.Name =dir.FullName;//文件的路径
dirItem.SubItems.Add("");//subitems.add方法添加一列中的数据,在这里每一次循环,就在这一列添加了数据
dirItem.SubItems.Add("文件夹");
dirItem.SubItems.Add(dir.LastWriteTimeUtc.ToString());
}
//列出文件
foreach(FileInfo fileinfiles)
{
ListViewItem fileItem = listView1.Items.Add(file.Name);
if (file.Extension ==".exe"|| file.Extension == "") //程序文件或无扩展名
{
Icon fileIcon =GetSystemIcon.GetIconByFileName(file.FullName);
imageList2.Images.Add(file.Name, fileIcon);
imageList3.Images.Add(file.Name, fileIcon);
fileItem.ImageKey =file.Name;
}
else //其它文件
{
if(!imageList2.Images.ContainsKey(file.Extension)) //ImageList中不存在此类图标
{
IconfileIcon =GetSystemIcon.GetIconByFileName(file.FullName);
imageList2.Images.Add(file.Extension, fileIcon);
imageList3.Images.Add(file.Extension, fileIcon);
}
fileItem.ImageKey =file.Extension;
}
fileItem.Name =file.FullName;
fileItem.SubItems.Add(file.Length.ToString() +"字节");
fileItem.SubItems.Add(file.Extension);
fileItem.SubItems.Add(file.LastWriteTimeUtc.ToString());
}
currentPath = newPath;
toolStripComboBox1.Text =currentPath; //更新地址栏
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
//打开文件夹或文件
privatevoid Open()
{
if(listView1.SelectedItems.Count > 0)
{
stringnewPath = listView1.SelectedItems[0].Name;
try
{
//判断是目录还是文件
if(Directory.Exists(newPath))//是目录
ListUpdate(newPath);
else
Process.Start(newPath);//打开文件
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
//显示属性窗口
privatevoid ShowAttributes()
{
if(listView1.SelectedItems.Count == 0)//无对象选中时,显示当前文件夹属性
{
FormAttributeFormAttributes1 =new FormAttribute(currentPath);
}
else //有对象选中时,显示第一个选中对象的属性
{
FormAttributeFormAttributes1 =new FormAttribute(listView1.SelectedItems[0].Name);
}
}
//装载主界面时的操作
privatevoid Form1_Load(objectsender,EventArgs e)
{
ListDrivers();
}
privatevoid treeView1_AfterSelect(object sender,TreeViewEventArgse)
{
e.Node.Expand();//展开下一级节点
ListUpdate(e.Node.FullPath);
}
//listview1的操作,双击操作,此处为双击打开文件
privatevoid listView1_ItemActivate(object sender,EventArgse)
{
Open();
}
//返回上一层
privatevoid toolStripButton1_Click(object sender,EventArgse)
{
if(currentPath == "")
return;
DirectoryInfodir =new DirectoryInfo(currentPath);
/*
将 DirectoryInfo类用于典型操作,如复制、移动、重命名、创建和删除目录。
如果打算多次重用某个对象,可考虑使用 DirectoryInfo的实例方法,而不是 Directory类的相应静态方法,因为并不总是需要安全检查。
*/
if(dir.Parent != null)
{
ListUpdate(dir.Parent.FullName);//刷新路径下的文件
}
else
{
ListDrivers();//重新装载磁盘信息
}
}
//上下文菜单代码,是一个contextMenuStrip,里边有新建文件夹,属性,删除,重命名,刷新操作。
privatevoid contextMenuStrip1_Opening(object sender,CancelEventArgse)
{
Pointpoint = listView1.PointToClient(Cursor.Position);
ListViewItemitem = listView1.GetItemAt(point.X, point.Y); //获得鼠标坐标处的ListViewItem
if(item == null) //当前位置没有ListViewItem
{
//默认情况下都是true
新建文件夹ToolStripMenuItem.Visible = true;
属性ToolStripMenuItem.Visible = false;
删除ToolStripMenuItem1.Visible = false;
重命名ToolStripMenuItem.Visible = false;
//什么场合下都可以刷新。
}
else //有
{
新建文件夹ToolStripMenuItem.Visible = false;
属性ToolStripMenuItem.Visible = true;
删除ToolStripMenuItem1.Visible = true;
重命名ToolStripMenuItem.Visible = true;
}
}
//设置属性的点击事件
privatevoid 属性ToolStripMenuItem1_Click_1(object sender,EventArgse)
{
ShowAttributes();
}
//设置新建文件夹的点击事件
privatevoid 新建文件夹ToolStripMenuItem_Click_1(object sender,EventArgse)
{
CreateFolder();
}
//新建文件夹
privatevoid CreateFolder()
{
try
{
//Path.Combine将两个字符串组合成一个路径。返回字符串。
stringpath = Path.Combine(currentPath, "新建文件夹");//对包含文件或目录路径信息的 String实例执行操作
inti = 1;
stringnewPath = path;
while(Directory.Exists(newPath))
{
newPath = path + i;
i++;
}
Directory.CreateDirectory(newPath);//新建文件
listView1.Items.Add(newPath, "新建文件夹" + (i - 1 == 0 ?"": (i - 1).ToString()), 2);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
//删除
privatevoid Delete()
{
if(listView1.SelectedItems.Count == 0)
return;
DialogResultresult =MessageBox.Show("确定要删除吗?","确认删除",MessageBoxButtons.YesNo,MessageBoxIcon.Information);
if(result == DialogResult.No)
return;
try
{
foreach(ListViewItem iteminlistView1.SelectedItems)
{
stringpath = item.Name;//获取项目的绝对路径
if(File.Exists(path)) //如果存在文件
{
File.Delete(path);
}
elseif (Directory.Exists(path))
{
//如果存在目录
Directory.Delete(path,true);//Directory 类公开用于创建、移动和枚举通过目录和子目录的静态方法。此类无法继承
}
/*
Directory的方法:
* CreateDirectory 已重载。创建指定路径中的所有目录。
Delete 已重载。删除指定的目录。
Equals 已重载。确定两个 Object实例是否相等。(从 Object继承。)
Exists 确定给定路径是否引用磁盘上的现有目录。
*/
//列表中移除
listView1.Items.Remove(item);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
// 右键单击的删除
privatevoid 删除ToolStripMenuItem1_Click(object sender,EventArgse)
{
Delete();
}
//右键单击的重命名
privatevoid 重命名ToolStripMenuItem_Click(object sender,EventArgse)
{
foreach(ListViewItem iteminlistView1.SelectedItems)
{
oldname = item.Name;
}
newrename(this).Show();
}
//右键单击的刷新
privatevoid 刷新ToolStripMenuItem_Click(object sender,EventArgse)
{
ListUpdate(currentPath);
}
//存根,因为在rename中更新完文件名后需要刷新form1的内容,用到了修改构造方法,这时rename.cs调用form1的更新函数的时候就需要在form1中先进行存根。
internalvoid toolStripButton2_Click()
{
ListUpdate(currentPath);
}
privatevoid toolStripButton3_Click(object sender,EventArgse)
{
stringnewPath = toolStripComboBox1.Text;
if(newPath == "")
return;
ListUpdate(newPath);
}
privatevoid 关闭系统ToolStripMenuItem_Click(object sender,EventArgse)
{
this.Close();
}
privatevoid 关于ToolStripMenuItem_Click(object sender,EventArgse)
{
newabout().Show();
}
}
}
2属性窗口:
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 WindowsFormsApplication1
{
public partial class FormAttribute : Form
{
publicFormAttribute(string path)
{
InitializeComponent();
if(Directory.Exists(path))
{
DirectoryInfodir =new DirectoryInfo(path);
this.FileName= dir.Name;
this.FileType= "文件夹";
this.FileLocation= (dir.Parent !=null) ? dir.Parent.FullName : null;
this.FileCreationTime= dir.CreationTime.ToString();
this.FileLastWriteTime= dir.LastAccessTimeUtc.ToString();
this.FileLastAccessTime= dir.LastAccessTimeUtc.ToString();
//this.FileLength= dir.
}
elseif (File.Exists(path))
{
FileInfofile =new FileInfo(path);
this.FileName= file.Name;
this.FileType= file.Extension;
this.FileLocation= (file.DirectoryName !=null) ?file.DirectoryName : null;
this.FileCreationTime= file.CreationTime.ToString();
this.FileLastWriteTime= file.LastAccessTimeUtc.ToString();
this.FileLastAccessTime= file.LastAccessTimeUtc.ToString();
this.FileLength= file.Length.ToString() +" 字节";
}
this.Show();
}
publicstring FileName
{
get{ return textBox1.Text;}
set{ textBox1.Text = value; }
}
public string FileType
{
get{ return textBox2.Text; }
set{ textBox2.Text = value; }
}
public stringFileLocation
{
get{ return textBox3.Text;}
set{ textBox3.Text = value; }
}
public string FileLength
{
get{ return textBox4.Text; }
set{ textBox4.Text = value; }
}
public string FileCreationTime
{
get{ return textBox5.Text; }
set{ textBox5.Text = value; }
}
public string FileLastWriteTime
{
get{ return textBox6.Text; }
set{ textBox6.Text = value; }
}
public string FileLastAccessTime
{
get{ return textBox7.Text; }
set{ textBox7.Text = value; }
}
privatevoid button1_Click(objectsender,EventArgs e)
{
this.Close();
}
privatevoid FormAttribute_Load(object sender,EventArgs e)
{
}
}
}
3重命名文件名窗口:
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 WindowsFormsApplication1
{
public partial class rename : Form
{
privateForm1 f1;
publicrename(Form1 f1)
{
InitializeComponent();
this.f1= f1;
}
privatevoid rename_Load(objectsender,EventArgs e)
{
textBox1.Text = Form1.oldname;
}
privatevoid button1_Click(objectsender,EventArgs e)
{
// 列表中的原始文件全路径名
stringoldStr = textBox1.Text.ToString().Trim();
// 新文件名
string[]newname = oldStr.Split('\\');
stringnewStr = "";
for(int i = 0; i < newname.Length - 1; i++)
{
newStr += newname[i];
newStr+="\\";
}
newStr +=textBox2.Text.ToString().Trim();
// 改名方法
FileInfofi = new FileInfo(oldStr);
fi.MoveTo(Path.Combine(newStr));
//关闭窗口,并刷新主界面
f1.toolStripButton2_Click();
this.Close();
}
}
}
4关于作者窗口
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;
namespace WindowsFormsApplication1
{
public partial class about : Form
{
publicabout()
{
InitializeComponent();
}
privatevoid about_Load(objectsender,EventArgs e)
{
}
}
}