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 } } }