1.<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />案例学习:了解FileInfo类的一些主要属性
下面的示例演示了
FileInfo
类的一些主要属性。
using
System;
using
System.IO;
class
Test
{
public static void Main()
{
string fileName = "C:\\autoexec.bat";
FileInfo fileInfo = new FileInfo(fileName);
if (!fileInfo.Exists)
{
return;
}
Console.WriteLine("{0} has a directoryName of {1}",fileName,fileInfo.DirectoryName);
/* 下面是代码的处理结果,
* 实际的结果因机器不同:
*
* C:\autoexec.bat has a directoryName of C:\
*/
}
}
|
2.案例学习:实现文件的复制
本案例将解决,同磁盘环境下文件复制的问题。请尝试把
C:\WinNT\Win.INI
文件拷贝到
C:\
下的代码,怎么写呢?
u
实验步骤(1):
向一个
Form
窗体上拖拽三个
Button
控件,三个控件的
text
属性分别设置为“复制文本文件”、“创建文本文件”、
“删除文本文件”。如图
3
-
3
所示:
图
3-3
文件操作界面
图
u
实验步骤(2):
双击“复制文本文件”、“创建文本文件”、“删除文本文件”,在
click
事件处理方法里分别添加代码如下:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.IO;
namespace
FileOptionApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
///
<summary>
/// 复制文本文件
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
string somefile = @"C:\Documents and Settings\Administrator\My Documents\SQL Server2000安装故障.txt";
string target = @"c:\2.txt";
if (!File.Exists(somefile))
{
MessageBox.Show("文件不存在!");
}
else
{
if (File.Exists(target))
{
File.Delete(target);
}
File.Copy(somefile, target);
MessageBox.Show("文件复制成功!");
}
}
///
<summary>
/// 创建文本文件
/// </summary>
private void button2_Click(object sender, EventArgs e)
{
string target = @"c:\2.txt";
if (File.Exists(target))
{
File.Delete(target);
}
File.CreateText(target);
}
///
<summary>
/// 删除文本文件
/// </summary>
private void button3_Click(object sender, EventArgs e)
{
string target = @"c:\2.txt";
if (File.Exists(target))
{
File.Delete(target);
MessageBox.Show("文件删除成功!");
}
}
}
}
|
问题讨论:
刚才的实验我们是通过File类实现并完成任务的,那么此次我们通过更换FileInfo类执行同样的复制动作如何实现呢?请将button1_Click的代码替换为下列代码试试:
private
void button1_Click(object sender, EventArgs e)
{
string path = @"C:\WINDOWS\IE4 Error Log.txt";
string target = @"c:\1.txt";
FileInfo myfile = new FileInfo(path);
if (!myfile.Exists)
{
MessageBox.Show("对不起,未发现路径文件!");
}
else
{
myfile.CopyTo(target);
MessageBox.Show("复制成功!");
}
}
|
3.案例学习:获取文件基本信息
本案例将解决,如何显示文件的基本信息问题。
u
实验步骤(1):
向一个
Form
窗体上拖拽三个
Lable
控件和一个
Button
控件,
Button
控件的
text
属性设置为“获取文件信息”。如图
3
-
4
所示:
图
3-4
获取文件信息界面
图
u
实验步骤(2):
双击“获取文件信息”,在
click
事件处理方法里分别添加代码如下:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.IO;
namespace
FileOptionApplication
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
///
<summary>
/// 获取文件信息单击事件
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
string somefile = @"C:\Documents and Settings\Administrator\My Documents\SQL Server2000安装故障.txt";
FileInfo myfile = new FileInfo(somefile);
if (myfile.Exists)
{
MessageBox.Show("文件已经存在");
label1.Text = "文件创建时间:" + myfile.CreationTime.ToString();
label2.Text = "文件夹:" + myfile.Directory.ToString();
label3.Text = "文件夹名称:" + myfile.DirectoryName.ToString() + ",文件扩展名:" + myfile.Extension.ToString();
}
else
{
MessageBox.Show("文件并不存在");
}
}
}
}
|
问题讨论:
FileInfo
类和
File
类都可以实现上述操作,它们的方法也都非常相似,那么它们到底有什么区别呢?
n
FileInfo
类和File类的比较
n
两者都提供对文件类似的操作。
n
File
为静态类,直接使用;FileInfo需要实例化后才能使用 。
n
从性能上考虑,如果你要多次操作文件,不管是针对相同的,还是不同的,请使用FileInfo,说白了,单打独斗File最棒,群殴则首推FileInfo。
n
每次通过File类调用某个方法时,都要占用一定的CPU,而FileInfo类只在创建FileInfo对象时执行一次安全检查。
转载于:https://blog.51cto.com/qianshao/210942