文件和流
大约 2 分钟
文件和流
文件系统
FileSystemInfo -> DirectoryInfo
FileSystemInfo -> FileInfo
DriveInfo
- Utility:
Directory
File
Path
Directory 类和 File 类
只包含静态方法,不能被实例化。
如果只对文件夹或文件执行一个操作,使用这些类可以省去实例化.NET类 的系统开销。
// 查询文件夹是否存在 Directory.Exists(folderPath) // 查询文件是否存在 File.Exists(path)
DirectoryInfo 类和 FileInfo 类
实现与Directory类和File类大致相同的公共方法,并拥有一些公共属性和构造函数,但它们都是有状态的,并且这些类的成员都不是静态的。
如果使用同一个对象执行多个操作,使用这些类在构造时它们将读取合适文件系统对象的身份验证和其他信息 ,无论对每个对象(类实例)调用了多少方法,都不需要再次读取这些信息。
// 获取目录信息 DirectoryInfo info = new DirectoryInfo(folderPath); foreach (FileInfo i in info.GetFiles()) { Console.WriteLine(i.Name); Console.WriteLine(i.FullName); }
Path 类
- 包含用于处理路径名的一些静态方法
- Path.Combine() 连接路径
- VolumSeparatorChar、DirectorySeparatorChar、AltDirectiorySparatorChar、PathSeparator 可以获取特定平台的字符
DriveInfo 类
- 提供了指定驱动器的信息。
流
FileStream 字节文件流
用于操作字节(所有的文件本质都是字节形式存放的),也就是可以操作任意类型的文件
文件流可以用于操作大文件,对内存压力小
static void Main(string[] args) { using(var fs = new FileStream(@"test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)) { var str = "stream test ..."; fs.Write(Encoding.Default.GetBytes(str)); } }
StreamReader、StreamWriter 字符文件流
从文件中读取/写入数据(操作字符)
static void Main(string[] args) { using (var sr = new StreamReader(@"test.txt")) { var tmp = sr.ReadToEnd(); Console.WriteLine(tmp); Console.Read(); } }
获取路径
// 获取模块的完整路径
tring path1 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
// D:\work\prj\VP-VPlatform\XmlAndXsd\bin\Release\XmlAndXsd.vshost.exe
// 获取和设置当前目录(该进程从中启动的目录)的完全限定目录
string path2 = System.Environment.CurrentDirectory;
// D:\work\prj\VP-VPlatform\XmlAndXsd\bin\Release
// 获取应用程序的当前工作目录
string path3 = System.IO.Directory.GetCurrentDirectory();
// D:\work\prj\VP-VPlatform\XmlAndXsd\bin\Release
// 获取程序的基目录
string path4 = System.AppDomain.CurrentDomain.BaseDirectory;
// D:\work\prj\VP-VPlatform\XmlAndXsd\bin\Release\
// 获取和设置包括该应用程序的目录的名称
string path5 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
// D:\work\prj\VP-VPlatform\XmlAndXsd\bin\Release\
// 获取启动了应用程序的可执行文件的路径
string path6 = System.Windows.Forms.Application.StartupPath;
// D:\work\prj\VP-VPlatform\XmlAndXsd\bin\Release
// 获取启动了应用程序的可执行文件的路径及文件名
string path7 = System.Windows.Forms.Application.ExecutablePath;
// D:\work\prj\VP-VPlatform\XmlAndXsd\bin\Release\XmlAndXsd.EXE