3-1 Fileinfo类的常用方法

发布时间:2019-09-20 07:29:22编辑:auto阅读(1728)

    1 案例学习:了解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属性分别设置为“复制文本文件”、“创建文本文件”、 “删除文本文件”。如图33所示:

    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属性设置为“获取文件信息”。如图34所示:

    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类都可以实现上述操作,它们的方法也都非常相似,那么它们到底有什么区别呢?
    nFileInfo类和File类的比较

    n两者都提供对文件类似的操作。

    nFile为静态类,直接使用;FileInfo需要实例化后才能使用 。

    n从性能上考虑,如果你要多次操作文件,不管是针对相同的,还是不同的,请使用FileInfo,说白了,单打独斗File最棒,群殴则首推FileInfo

    n每次通过File类调用某个方法时,都要占用一定的CPU,而FileInfo类只在创建FileInfo对象时执行一次安全检查。

关键字