驱动器-目录-文件

Posted 81192

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了驱动器-目录-文件相关的知识,希望对你有一定的参考价值。

c#提供了操作驱动器,目录以及文件的相关类,可以很方便的进行目录文件的操作。

Driveinfo获取驱动器相关信息

以下为获取驱动器信息方法:

  // GetDrives() method retrieves the drive names of all logical drives on a computer. 
            DriveInfo[] drives = DriveInfo.GetDrives();
            Console.WriteLine(drives.Length);
            foreach (DriveInfo drive in drives)
            {
                if (drive.IsReady)
                {
                    Console.WriteLine("Drive Name : " + drive.Name);
                    Console.WriteLine("Drive Volume name : " + drive.VolumeLabel);
                    Console.WriteLine("Drive Format : " + drive.DriveFormat);
                    Console.WriteLine("Drive Type : " + drive.DriveType);
                    Console.WriteLine("Drive root directory name : " + drive.RootDirectory);
                    Console.WriteLine("Drive free space: " + drive.AvailableFreeSpace);
                    Console.WriteLine("Total Free space on the drive : " + drive.TotalFreeSpace);
                    Console.WriteLine("Total disk size : " + drive.TotalSize);
                    Console.WriteLine();
                }
            }
            Console.ReadLine();

获取目录(文件夹)有Directory和DirectoryInfo类,前者为静态方法,后者需要进行构造,构造参数为目录。可以对目录进行移动删除以及获取生成时间等的相关操作。以下代码为获取目录信息以及进行移动。

            string path = @"E:\\temp\\test";
            string destination = @"E:\\test2";
            DirectoryInfo di = new DirectoryInfo(path);//构造

            if (!di.Exists)
            {
                di.Create();
            }
            else
            {
                Console.WriteLine("File already exists!");
            }
            string name = di.CreationTime.ToString();//获取文件夹建立时间;
            Console.WriteLine(name);
            if (di.Exists)
            {
                di.MoveTo(destination);
            }
            //di.MoveTo("D:\\\\ctest\\\\test");//文件夹 移动到新位置;
            //di.Delete();
            Console.ReadKey();

对文件操作则有File和FileInfo类,同样前者为静态类,后者需要构造,C#提供了文件复制的方法,但是目录只有移动方法,以下代码为移动目录的方法,思路很简单,采用递归方法,获取要移动目录下的目录和文件,文件可以直接移动,目录则在新目录下即可。

  static void CopyDirectory(string srcDir, string desDir)
        {
            //检测源目录或者目标目录是否存在
            if (!Directory.Exists(srcDir))
            {
                Console.WriteLine("源目录不存在!");
                return;
            }
            if (!Directory.Exists(desDir))
            {
                Console.WriteLine("目标目录不存在!");
                Directory.CreateDirectory(desDir);//目标目录不存在则建立目标文件
            }
            //在目标目录下创建源目录
            string folderName;//获取目录:test1
            if (srcDir.LastIndexOf("\\\\") == srcDir.Length - 1)//如果源目录字符串为"E:\\\\test1\\\\"形式,则修改为"E:\\\\test1"
            {
                srcDir = srcDir.Remove(srcDir.Length - 1);
            }
            folderName = srcDir.Substring(srcDir.LastIndexOf("\\\\") + 1);//获取目录:test1

            string desFolderDir = desDir + "\\\\" + folderName;//目标目录
            if (desDir.LastIndexOf("\\\\") == desDir.Length - 1)//如果源目录字符串为"E:\\\\test2\\\\"形式
            {
                desFolderDir = desDir + folderName;
            }


            string[] file = Directory.GetFileSystemEntries(srcDir);//获取目标目录下的文件
            foreach (string temp in file)
            {
               
                if (Directory.Exists(temp))//判断目录是否存在,否则则为文件
                {
                    string currentDesDir = desFolderDir + "\\\\" + temp.Substring(temp.LastIndexOf("\\\\") + 1);//获取子目录
                    if (!Directory.Exists(currentDesDir))//把test1里的子目录放入test2里test1(放置第一个子目录时连带test1一起建立)里
                    {
                        Directory.CreateDirectory(currentDesDir);
                    }
                    CopyDirectory(temp, desFolderDir);//把子目录的东西复制到test2相应目录里面。desFolderDir现在不包含temp,但是当递归调用后真正执行时已经包含temp

                }
                else                                       //把文件复制到相应位置
                {
                    string filePathName = desFolderDir + "\\\\" + temp.Substring(temp.LastIndexOf("\\\\") + 1);
                    if (!Directory.Exists(desFolderDir))
                    {
                        Directory.CreateDirectory(desFolderDir);
                    }
                    File.Copy(temp, filePathName, true);
                }

            }
          
        }

此外,C#还提供了Path类对整个文件路径进行操作,可以获取路径目录,文件,扩展名等方法。

 

以上是关于驱动器-目录-文件的主要内容,如果未能解决你的问题,请参考以下文章

应用程序启动器 “sublime_text.desktop“ 还没有被标记为 信任。如果您不知道这个文件的来源,那么启动它可能会不安全。解决sublime在ubuntu中不支持中文输入问题。(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段

python常用代码片段总结

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段