C# 文件目录操作
目录操作
1.引入库
using System.IO;
2. 创建目录
string path = "D:\\testDir1\\testDir2\\testDir3"
Directory.CreateDirectory(path)
// 允许级联创建
3. 删除目录
string path = "D:\\testDir1"
Directory.Delete(path, false); // 如果目标文件夹非空,不删除
Directory.Delete(path, true); // 目标文件夹非空则级联删除
4. 移动目录
string path = "D:\\testDir\\sourceDir\\sourceDir";
Directory.CreateDirectory(path)
Directory.Move(path, "D:\\destDir");
// D:\\testDir\\sourceDir\\sourceDir -> // D:\\destDir
// destDirName 参数指定的目标路径应为新目录,如果目标目录已存在,会导致异常。
文件操作
1. 判断文件是否存在
if(File.Exists("D:\\testfile.txt")){
Console.WriteLine("ok!");
}else{
Console.WriteLine("are you kidding me ?");
}
2. 复制文件
string test_file = "D:\\testfile.txt";
File.Copy("D:\\testfile.txt", "D:\\tmptestfile.txt");
3. 删除文件
File.Delete("D:\\tmptestfile.txt");
4. 文件属性判断
// C#中文件的每一个属性都被一个唯一的二进制数表示
// 以下代码判读某个路径是否为文件夹
// 可以通过 .GetAttributes() 和 .SetAttributes() 来获取和修改属性
if (( File.GetAttributes(path) & FileAttributes.Directory) == FileAttributes.Directory )
{ //这个判断是如何进行的?
Console.WriteLine("“{0}”是目录", path);
}
else {
Console.WriteLine("“{0}”是文件", path);
}
5. 文件读写
string File.ReadAllText(string path, Encoding encoding)
// 读取每一行,拼接为一个字符串
string[] File.ReadAllLines(string path, Encoding encoding)
// 读取每一行,返回一个字符串数组
void WriteAllText(string path, string content, Encoding encoding)
// 将指定字符串覆盖到文件中,如果文件不存在则创建
void AppendAllText(string path, string content, Encoding encoding)
// 将指定字符串追加到文件中,如果文件不存在则创建
// 相应的还有:
WriteAllLines()
AppendAllLines()
6. FileStream
using (FileStream fs = File.Open(@"C:\Users\13234\Desktop\fstest.txt", FileMode.Create))
{
byte[] b = Encoding.UTF8.GetBytes("你好!世界》");
fs.Write(b, 0, b.Length);
}
using(FileStream fs = File.Open(@"C:\Users\13234\Desktop\fstest.txt", FileMode.Open))
{
byte[] b = new byte[1024]; // 每次读取的缓存大小
int len = 0;
while((len = fs.Read(b, 0, b.Length)) > 0)
{
Console.WriteLine(Encoding.UTF8.GetString(b, 0, len) + "\n");
}
}
---- suffer now and live the rest of your life as a champion ----