3-11 IO操作

Profile Picture
- Published on Mar 11, 2020🌏 Public

IO操作

Input/Output 即输入输出,C# 狭义的IO包括通信(指的是打字机之类的端口通信),另一个指的就是磁盘数据的操作。

要进行文件的操作,需要引用Sytem.IO命名空间。

文件夹

            //创建文件夹
            Directory.CreateDirectory("D:/CTest");

            //删除文件夹
            Directory.Delete("D:/CTest");

            //移动文件夹
            Directory.Move("D:/CTest", "D:/DTest");

            //判断是否穿在
            Directory.Exists("D:/CTest");

            //获取子文件夹数组
            Directory.GetDirectories("D:/CTest");

            //或取子文件数组
            Directory.GetFiles("D:/CTest");

CreateDirectory 创建文件夹

            Directory.CreateDirectory("F:/文件操作专用目录/CTest");
            Directory.CreateDirectory("F:/文件操作专用目录/CTest/A");
            Directory.CreateDirectory("F:/文件操作专用目录/CTest/B");
            Directory.CreateDirectory("F:/文件操作专用目录/CTest/C");

Delete 删除文件夹

            //删除空目录
            Directory.Delete("F:/文件操作专用目录/CTest");
            Directory.Delete("F:/文件操作专用目录/CTest", false);
            //删除目录及目录内的所有内容
            Directory.Delete("F:/文件操作专用目录/CTest",true);

Move 移动文件夹

            //改名
            Directory.Move("F:/文件操作专用目录/CTest", "F:/文件操作专用目录/DTest");
            //移动
            Directory.Move("F:/文件操作专用目录/DTest", "F:/CTest");

Exists 判断目录是否存在

            if (Directory.Exists("F:/文件操作专用目录/DTest/d"))
            {
                Directory.Delete("F:/文件操作专用目录/DTest/d");
            }

GetDirectories,GetFiles

           // //找F:/下面的所有目录
           //string[] dics=  Directory.GetDirectories("F:/");
           // //找F:/下面的所有文件
           // string[] files = Directory.GetFiles("F:/");

            //通配符查找:?表格一个字符,*型号表示任意多个字符
            string[] dics = Directory.GetDirectories("F:/文件操作专用目录/DTest", "A*");
            //查找所有txt文件
            string[] files = Directory.GetFiles("F:/", "*.rar");

            //深层查询
            string[] dics2 = Directory.GetDirectories("F:/文件操作专用目录/DTest", "A*", SearchOption.AllDirectories);
            string[] files2 = Directory.GetFiles("F:\\tongji", "*.js", SearchOption.AllDirectories);

练习:

1.D盘建立C1文件夹,然后在该文件夹下建立1000个目录,0~999。

2.C1下面将所有的以9开头的文件夹全部删除。

3.C1目录下面的以8开头的文件夹全部移动到C1/0目录下。

        static void Main()
        {
            for (int i = 0; i < 1000; i++)
            {
                Directory.CreateDirectory("E:\\C1\\" + i);
            }

            string[] nineList = Directory.GetDirectories("E:\\C1", "9*");
            foreach (string path in nineList)
            {
                if (Directory.Exists(path))
                {
                    Directory.Delete(path, true);
                }
            }
            string[] eightList = Directory.GetDirectories("E:\\C1", "8*");
            foreach (string path in eightList)
            {
                if (Directory.Exists(path))
                {
                    //方式1,字符串截取
                    var lastFXGIndex = path.LastIndexOf('\\'); //找到最后一个反斜杠所在索引值
                    var dirName = path.Substring(lastFXGIndex + 1); //截取

                    //方式2,通过目录信息获取目录名
                    DirectoryInfo info = new DirectoryInfo(path);
                    Directory.Move(path, "E:\\C1\\0\\" + info.Name);
                }
            }
        }