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