一、Path
二、Directory、DirectoryInfo目录文件操作
//创建目录:Directory.CreateDirectory()
string path = @"d:\testfiles\testO2\test002";
if(!Directory.Exists(path)){
Directory.CreateDirectory(path);
}
//删除目录:Directory.Delete(path,bool b);
//删除指定的目最,并删除该目录中的所有子目录和文件(如果表示)。b:若要删除path 中的目录、子目录和文件,则为true;否则为 false,
//如果有子目录就不能删除,加上true参数就可以删除指定目录及子目录
Directory.Delete(path)
Directory.Delete(path,true)
//文件移动:Directory.Move();
//把d:\|testfiles\test\test001文件下的test001移动到test2中
Directory.Move(@"d:\|testfiles\test\test001",@"d:\testfiles\test2\test001");
//Directory.GetDirectories()获取指定目录下的所有子目录
//Directory.GetFiles()获取指定目录下的所有文件
string path2 = @"d:\testfiles\test2";
string[] dics= Directory.GetDirectories(path2);//获取子目录列表
string path3= @"d:\testfiles\test2\test001";
string[] files= Directory.GetFiles(path3);//目录下的文件列表
//DirectoryInfo用法
Directorylnfo direc = new Directorylnfo(path);
//创建目录
direc.Create();
direc.MoveTo("目标路径");
//只目录下没有子目录或者文件时才能删除,如果有文件,参数就需要改为true
direc.Delete(false);
//获取子目录
direc.GetDirectory();
//获取子文件
direc.GetFiles();
三、File、FileInfo
- File.CreateText() : 返回值是StreamWriter
- File.Create() : 返回值是FileStream
string path = @"D:\\C盘移动的\\Desktop\\text001";
//文件存在就追加写入内容,不存在就创建文件,再调用写入流才能写入内容
StreamWriter sw = File.AppendText(path);
sw.WriteLine("你好!");
sw.Flush();
sw.Close();
string path2 = @"D:\\C盘移动的\\Desktop\\text002";
//文件存在就追加写入内容,不存在就创建文件,不需要再调用写入流,就可以直接写入内容
File.AppendAllText(path2, "sjsjjsssssa");
string path3 = @"D:\\C盘移动的\\Desktop\\text003";
List<string> list = new List<string> {
"你第一好啊",
"你第二好啊",
"你第三好啊",
};
//文件存在就追加写入内容,不存在就创建文件,不需要再调用写入流,就可以直接写入内容
//按照list集合数据写入文本中,一个数据占一行
File.AppendAllLines(path3, list, Encoding.UTF8);
File.AppendAllLines(path3, list);
打开文件
FileStream fs= File.OpenRead(path);//只读文件流
FileStream fs = File.OpenWrite(path);//写入文件流
//StreamReader sr = File.OpenText(path);//打开文本文件
//string v = sr.ReadToEnd();
//Console.WriteLine(v);
//File.Open(path, FileMode.Open);//现有文件,若不存在,则出现异常
//File.Open(path, FileMode.Create);//创建新文件,若存在,则覆盖
//File.Open(path, FileMode.CreateNew);//创建新文件,若存在,则异常
//File.Open(path, FileMode.Append, FileAccess.Write);//若不存在创建新文件,若存在,则查找到文件末尾,配合FileAccess.Write使用
//File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);//若不存在则创建,若存在则打开
//读取
string path4 = @"D:\\C盘移动的\\Desktop\\text003";
Console.WriteLine("===========方法①==============");
string[] strings = File.ReadAllLines(path4);
foreach (string s in strings)
{
Console.WriteLine(s);
}
Console.WriteLine("===========方法②==============");
string v = File.ReadAllText(path4);
Console.WriteLine(v);
Console.WriteLine("===========方法③==============");
IEnumerable<string> list = File.ReadLines(path4);
foreach (string s in list)
{
Console.WriteLine(s);
}
Console.WriteLine("===========方法④==============");
byte[] bytes = File.ReadAllBytes(path4);
//System.Text.Encoding.UTF8.GetString(bytes);把byte数组转换成编码为UTF8的字符串
string v1 = System.Text.Encoding.UTF8.GetString(bytes);
Console.WriteLine(v1);
Console.WriteLine("===========FileInfo读取文件内容==============");
FileInfo fi = new FileInfo(path4);
Console.WriteLine("===========FileInfo方法①==============");
StreamReader streamReader = fi.OpenText();
string v2 = streamReader.ReadToEnd();
Console.WriteLine(v2);
写入
string path5 = @"D:\\C盘移动的\\Desktop\\text004";
//创建一个新文件,向其中写入指定的字符串,然后关闭文件。
//如果目标文件已存在,则覆盖该文件。
File.WriteAllText(path5, "sdhdhdhkjshjgsg你好好爱好好哈哈");
//创建一个新文件,向其中写入指定的字符串数组,然后关闭文件。
//如果目标文件已存在,则覆盖该文件。
File.WriteAllLines(path5, new string[] { "哈哈哈哈哈", "呵呵呵呵呵", "嘿嘿嘿嘿嘿" });
//创建一个新文件,向其中写入指定的字节流数组,然后关闭文件。
//如果目标文件已存在,则覆盖该文件。
Byte[] b = new Byte[] { 0, 1, 0, 1, 0, 10, 11, 0, 2, 0, 20, 2, 0 };
File.WriteAllBytes(path5, b);
四、BufferedStream:
- 文件缓冲区:缓冲区是内存中的一块连续区域, 用于暂时存放读写期间文件数据在内存区预留的一定空间。