一.File类常见的操作方法
(1).public static FileStream Create(string path):在指定路径中创建或覆盖文件,path:要创建的文件的路径及名称。
(2).public static StreamWriter AppendText(string path):创建一个 System.IO.StreamWriter,它将 UTF-8 编码文本追加到现有文件;path:要向其中追加内容的文件的路径。
(3).public static void Delete(string path): 删除指定的文件。
(4).public static bool Exists(string path):确定指定的文件是否存在。
(5).public static FileStream Open(string path, FileMode mode):打开指定路径上的 System.IO.FileStream,具有读/写访问权限。
示例:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyFile { class Program { static void Main(string[] args) { FileStream fs = null; StreamWriter writer = null; string path = "D:\\test.txt"; if(!File.Exists(path)) { fs = File.Create(path); Console.WriteLine("新建一个文件:{0}", path); } else { fs = File.Open(path, FileMode.Open); Console.WriteLine("文件已存在,直接打开"); } writer = new StreamWriter(fs); writer.WriteLine("测试文本"); Console.WriteLine("像文件中写入文本数据流"); writer.Flush(); writer.Close(); Console.WriteLine("关闭数据流"); Console.ReadKey(); } } }
二.Directory常见的操作方法
Directory类是用来创建、移动、删除和枚举所有目录或子目录的静态类,下面是它常见方法的使用:
(1). public static DirectoryInfo CreateDirectory(string path):在指定路径创建所有目录和子目录。
(2).public static void Delete(string path):从指定路径删除空目录(path:要移除的空目录的名称。 此目录必须为可写或为空)。
(3).public static void Delete(string path, bool recursive):删除指定的目录并(如果指示)删除该目录中的所有子目录和文件(recursive:若要移除 path 中的目录、子目录和文件,则为 true;否则为 false)
(4).public static string[] GetFiles(string path):返回指定目录中文件的名称(包括其路径)。
(5).public static string GetCurrentDirectory():获取应用程序的当前工作目录。
(6).public static void Move(string sourceDirName, string destDirName):将文件或目录及其内容移到新位置(sourceDirName:要移动的文件或目录的路径。destDirName:指向 sourceDirName 的新位置的路径。 如果 sourceDirName 是一个文件,则 destDirName 也必须是一个文件名)。
示例:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyDirectory { class Program { static void Main(string[] args) { string dirPath = "D:\\DirectorySample"; string filePath = String.Format("{0}\\{1}", dirPath, "test.txt"); if(!Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath); Console.WriteLine("创建一个目录:{0}", dirPath); } else { Console.WriteLine("目录{0}已存在", dirPath); } if(!File.Exists(filePath)) { File.Create(filePath); Console.WriteLine("创建一个文件:{0}", filePath); } else { Console.WriteLine("文件:{0}已存在", filePath); } Console.ReadKey(); } } }
三.通过流来对文件进行操作
流(Stream)可以理解为内存中的字节序列,Stream是所有流的抽象基类,流涉及三个基本操作:
(1).对流进行读取:将流中的数据读取到具体的数据结构中(如数组中);
(2).对流进行写入:把数据结构中的数据写入到流中;
(3).对流进行查找:对流内部的当前位置进行查询和修改
示例:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyStream { class Program { static void Main(string[] args) { string filePath = "D:\\test.txt"; string msg = "Hello World"; FileStream fileStream = File.Open(filePath, FileMode.OpenOrCreate); byte[] msgAsByteArray = Encoding.Default.GetBytes(msg); Console.WriteLine("开始写入{0}到文件中", msg); fileStream.Write(msgAsByteArray, 0, msgAsByteArray.Length); //重置内部流的位置 fileStream.Seek(0, SeekOrigin.Begin); Console.WriteLine("写入文件中的数据为:"); byte[] bytesFromFile = new byte[msgAsByteArray.Length]; fileStream.Read(bytesFromFile, 0, msgAsByteArray.Length); Console.WriteLine(Encoding.Default.GetString(bytesFromFile)); Console.ReadKey(); } } }
四.通过读写器操作流
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyStream { class Program { static void Main(string[] args) { string filePath = "D:\\test.txt"; string msg = "Hello World"; FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate); //创建StreamWriter对象 StreamWriter streamWriter = new StreamWriter(fileStream); streamWriter.Write(msg); //创建StreamReader对象 StreamReader streamReader = new StreamReader(fileStream); Console.WriteLine("写入到文件中的数据为:{0}", streamReader.ReadToEnd()); streamWriter.Close(); streamReader.Close(); Console.ReadKey(); } } }