一、简介
简单记录一下在c#中文件的操作,文件目录的创建,以及文件的创建和读写
二、文件操作
2.1 获取程序当前目录
string path1 = AppDomain.CurrentDomain.BaseDirectory;//D:\\work\\app1\\bin\\Debug\\ string path2 = Directory.GetCurrentDirectory();//D:\\work\\app1\\bin\\Debug
这两个都可以获取当前程序的目录,根据获取到的路径可以看到path1比path2多了一个\,当需要获取当前程序目录时,使用这两个中的任何一个都可以
2.2 判断及创建文件
if (!Directory.Exists(path2))//检测文件目录是否存在 { Directory.CreateDirectory(path2);//创建该文件目录 } string filePath = Path.Combine(path2, "log.txt"); if (!File.Exists(filePath))//检测文件是否存在 { File.Create(filePath);//创建文件 当该文件存在时,会被新创建的文件覆盖掉 } DirectoryInfo directory = new DirectoryInfo(filePath);//即使文件不存在,也不会报错,新建的对象相当于对该文件的一种描述,可以根据属性看到文件的创建时间,修改时间以及该文件是否存在
2.3 文件夹及文件操作
Directory.Move(sourceDirName, destDirName);//将文件夹及其文件移动到新位置 Directory.Delete(path);//删除指定路径空目录
2.4 文件内容读取和写入
第一种写入方式 使用 StreamWriter
if (!Directory.Exists(sFilePath))//验证路径是否存在 { Directory.CreateDirectory(sFilePath);//不存在则创建 } FileStream fs; StreamWriter sw; if (File.Exists(sFileName))//验证文件是否存在,有则追加,无则创建 { fs = new FileStream(sFileName, FileMode.Append, FileAccess.Write);//文件存在则追加 } else { fs = new FileStream(sFileName, FileMode.Create, FileAccess.Write);//不存在则创建 } sw = new StreamWriter(fs); sw.WriteLine(logstr); sw.Flush();//清空写入器缓冲区,并将内容写入到文件中 sw.Close();//关闭连接 fs.Close(); fs.Dispose();//可使用using简化
第二种只使用 FileStream 写入
using (FileStream fs= File.Create(fileName))//打开文件流 (创建文件并写入) { string str="1100"; byte[] bytes = Encoding.Default.GetBytes(str); fs.Write(bytes, 0, bytes.Length); fs.Flush(); }
第三种,使用File.AppendText()
using (StreamWriter sw = File.AppendText(filePath))//流写入器(创建/打开文件并写入) { string str= "4152311"; byte[] bytes = Encoding.Default.GetBytes(str); sw.BaseStream.Write(bytes, 0, bytes.Length); sw.Flush(); } using (StreamWriter sw = File.AppendText(fileName)) { string msg = "135534355"; sw.WriteLine(msg); sw.Flush(); }
2.5 读取文件内容
第一种 一次性全部加载入内存中
string text = File.ReadAllText(fileName);//获取文本 byte[] txtByteArray= File.ReadAllBytes(fileName); string text1= Encoding.UTF8.GetString(txtByteArray);//转换为文本
第二种 从流中分批读取字节块加入到内存中
using (FileStream stream = File.OpenRead(fileName)) { int length = 6; int result = -1; while (result != 0) { byte[] bytes = new byte[length]; result = stream.Read(bytes, 0, length); } }
第三种 读取二进制文件
public static byte[] ReadBinFile(string filePath) { byte[] filedata = null; FileInfo mmidFile = new FileInfo(filePath); if (!mmidFile.Exists) return filedata; FileStream myFile = new FileStream(filePath, FileMode.Open, FileAccess.Read); BinaryReader myReader = new BinaryReader(myFile); filedata = myReader.ReadBytes((int)myFile.Length); myReader.Dispose(); myFile.Dispose(); return filedata; }
标签:文件,fs,string,filePath,C#,sw,File,操作 From: https://www.cnblogs.com/just-like/p/16694327.html