1.Directory类:公开用于创建,移动和枚举目录和子目录的实例方法
下面的Demo 演示了如何复制目录及其文件
static void Main()
{
DirectoryInfo source = new DirectoryInfo(@"D:\Practise\IO\Source");
DirectoryInfo target = new DirectoryInfo(@"D:\Practise\IO\Target");
CopyAll(source, target);
}
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
if (source.FullName.ToLower() == target.FullName.ToLower())
{
return;
}
if (!target.Exists)
{
target.CreateSubdirectory(target.FullName);
}
foreach (FileInfo fi in source.GetFiles())
{
Console.WriteLine(@"Copy {0}\{1}", source.FullName, fi.Name);
fi.CopyTo(Path.Combine(target.FullName, fi.Name));
}
//Copy each subdirectory using recursion
foreach (DirectoryInfo sourceSubDir in source.GetDirectories())
{
DirectoryInfo targetSubDir = target.CreateSubdirectory(sourceSubDir.Name);
CopyAll(sourceSubDir, targetSubDir);
}
}
2.FileInfo类:提供创建,删除,复制,移动和打开文件属性的实例方法
下面Demo演示了文件创建,写入,读取,复制,删除操作
static void Main()
{
string path = @"D:\Practise\IO\temp.txt";
FileInfo fi = new FileInfo(path);
if (!fi.Exists)
{
using (StreamWriter sw = fi.CreateText())
{
sw.Write("hello");
sw.Write("welcome");
}
}
using (StreamReader sr = fi.OpenText())
{
Console.WriteLine(sr.ReadLine());
}
try
{
string targetPath = path + "temp";
FileInfo fi2 = new FileInfo(targetPath);
fi2.Delete();
fi.CopyTo(targetPath);
fi2.Delete();
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
3.FileStream 支持同步读写操作,也支持异步读写操作
//创建一个文件,向其中添加一些文本,然后从此文件中读取。
static void Main()
{
string filePath = @"D:\Practise\IO\temp.txt";
if (File.Exists(filePath))
{
File.Delete(filePath);
}
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
WriteUsingUTF8(fs, "My name is guo,");
WriteUsingUTF8(fs, "i am 24 years old,\r\n");
WriteUsingUTF8(fs, "I come from xiantao city in the hubei province");
}
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
byte[] b = new byte[1024];
if (fs.Read(b, 0, b.Length) > 0)
{
Console.WriteLine(new UTF8Encoding().GetString(b));
}
}
}
public static void WriteUsingUTF8(FileStream fs, string info)
{
byte[] b = new UTF8Encoding(true).GetBytes(info);
fs.Write(b, 0, b.Length);
}