c#管理文件系统

using System;
using System.Collections.Generic;
using System.IO;
using static System.Console;

/*System.IO:
       FileSystemInfo       DriveInfo
        |         |
DirectoryInfo   FileInfo    

    Directory   File        Path

Directory和File类只含静态方法,不能被实例化(多用于执行一个操作)
DirectoryInfo和FileInfo提供与Directory和File大致相同的公共方法
    (多用于对同一个对象执行多个操作)

DriveInfo检查驱动器信息(磁盘C,D,E...)
*/

namespace ConsoleApp
{
    class Program
    {

        static void Main(string[] args)
        {
            //PrintDrivesInfo();

            //Path类
            string path = Path.Combine(@"D:\Projects", "ReadMe.txt");
            WriteLine(path);
            path = GetDocumentsFolder();
            WriteLine(path);
            //Environment.SpecialFolder枚举了桌面、音乐、图片等

            //创建文件, 路径必须存在
            string fileName = "D:\\Sample1.txt";
            File.WriteAllText(fileName, "Hello World!");

            //复制文件 执行时间略长
            var file = new FileInfo(@".\ReadMe.txt");
            //路径需存在,不能覆盖现有文件
            if (file.Exists && !File.Exists(@"C:\ReadMe.txt"))
                file.CopyTo(@"C:\ReadMe.txt");
            //
            File.Copy(@"C:\ReadMe.txt", @"C:\Copies\ReadMe.txt");

            //删除、移动 文件或文件夹
            //File.Delete(path);
            //File.Move(path, path);

            string[] lines = File.ReadAllLines(fileName);

            //在读取完整个文件之前就可遍历它
            IEnumerable<string> lines1 = File.ReadAllLines(fileName);
            foreach (var line in lines1) { }

            string[] movies = { "Snow White And The Seven Dwarfs", "Gone With The Wind" };
            File.WriteAllLines(fileName, movies);

            //追加
            File.AppendAllLines(fileName, movies);

            //枚举文件
            Directory.GetFiles(path); //返回目录中所有文件的名称(包括其路径)
            Directory.GetDirectories(path);//返回目录中子目录的名称(包括其路径)

            //同上,但它们使用IEnumerable<string>立即开始返回结果
            Directory.EnumerateFiles(path);
            Directory.EnumerateDirectories(path);



        }

        public static void PrintDrivesInfo()
        {
            DriveInfo[] drives = DriveInfo.GetDrives();
            foreach (var drive in drives)
            {
                if (drive.IsReady)
                {
                    WriteLine($"Drive name: {drive.Name}");                     //C:\
                    WriteLine($"Format: {drive.DriveFormat}");                  //NTFS
                    WriteLine($"Type: {drive.DriveType}");                      //Fixed
                    WriteLine($"Root directory: {drive.RootDirectory}");        //C:\
                    WriteLine($"Volume label: {drive.VolumeLabel}");            //System
                    WriteLine($"Free space: {drive.TotalFreeSpace}");           //...
                    WriteLine($"Available space: {drive.AvailableFreeSpace}");
                    WriteLine($"Total size: {drive.TotalSize}");
                    WriteLine();
                }
            }
        }

        private static string GetDocumentsFolder()
        {
#if NET46
            return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
#else
            string drive = Environment.GetEnvironmentVariable("HOMEDRIVE");
            string path = Environment.GetEnvironmentVariable("HOMEPATH");
            //return Path.Combine(drive+path, "documents");//不一定正确,有可能用户改变了文档的位置
            return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
#endif
        }
    }
}

 

posted @ 2018-09-08 18:58  xslwm  阅读(408)  评论(0编辑  收藏  举报