流
流是串行化设备的抽象表示
- 输出流
向某些外部目标写入数据 - 输入流
用于将数据读到程序可以访问的内存或变量中
-
用于文件操作的类
File
提供用于创建、复制、删除、移动和打开文件的静态方法并协助创建FileStream对象
Directory
提供用于创建、复制、删除、移动和打开目录的静态方法
Path
对包含文件或目录路径信息的字符串执行操作 -
FileInfo
提供创建、复制、删除、移动和打开文件的实例方法并帮助创建FileSystem对象
DirectoryInfo
提供创建、移动和枚举目录和子目录的实例方法
FileStream
指向文件的流,支持对文件的读写,支持随机访问文件
StreamReader
从流中读取字符数据
StreamWriter
向流中写字符数据 -
FileSystemWatcher
用于监控文件和目录的变化 -
DriveInfo
提供了指定驱动器的信息
File类
常用静态方法
public static void Copy ( string sourceFileName, string destFileName )
将文件从源位置复制到目标位置
File.Copy(“c:\\text.txt”, “e:\\test.txt”);
public static FileStream Create ( string path )
创建指定文件并返回一个FileStream对象,如果指定对象存在则覆盖已有对象
FileStream fs=File.Create(“d:\\test.txt”);
fs.Write(…);
……
fs.Close( );
public static StreamWriter CreateText ( string path )
创建指定文件并返回一个StreamWriter对象
string path = @"c:\temp\MyTest.txt";
if (!File.Exists(path)) {
using (StreamWriter sw = File.CreateText(path))
{ sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
public static StreamReader OpenText ( string path )
打开指定文件并返回一个StreamReader对象
using (StreamReader sr = File.OpenText(path)) {
string s = "";
while ((s = sr.ReadLine()) != null) {
Console.WriteLine(s);
}
}
public static void Delete ( string path )
删除指定的文件
File.Delete(“d:\\text.txt”);
public static bool Exists ( string path )
判断文件存在与否
if ( File.Exists(“d:\\text.txt”)==true)
{ Console.WriteLine(“The file exists”); }
public static void Move ( string sourceFileName, string destFileName )
将指定文件移到新位置
File.Move(“c:\\text.txt”,”e:\\test.txt”);
public static FileStream Open ( string path, FileMode mode )
FileMode: Append, Create, CreateNew, Open, OpenOrCreate, Truncate
public static FileStream OpenRead ( string path )
Append 打开现有文件并查找到文件尾,或创建新文件。 仅用于写操作
Create 指定操作系统应创建新文件。如果文件已存在,它将被改写。
CreateNew 指定操作系统应创建新文件。如果文件已存在,则将引发 IOException。
Open 指定操作系统应打开现有文件。 若文件不存在则抛出异常
OpenOrCreate 指定操作系统应打开文件(如果文件存在);否则,应创建新文件。
Truncate 指定操作系统应打开现有文件。文件一旦打开,就将被截断为零字节大小。 仅用于写操作。若文件不存在则抛出异常
string path = Path.GetTempFileName();
using ( FileStream fs = File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None) ) {
byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
fs.Write(info, 0, info.Length);
}
using ( FileStream fs = File.Open(path, FileMode.Open) ) {
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while ( fs.Read(b,0,b.Length) > 0 ) {
Console.WriteLine ( temp.GetString(b) );
}
}
Directory类
常用方法
public static DirectoryInfo CreateDirectory ( string path )
创建目录和子目录
DirectoryInfo di=Directory.CreateDirectory(“c:\\mydir”);
public static void Delete ( string path )
删除目录及其内容
Directory.Delete(“c:\\mydir”);
public static void Move ( string sourceDirName, string destDirName )
移动文件和目录内容
Directory.Move(“c:\\mydir”,”c:\\mynewdir”);
public static bool Exists ( string path )
确定给定的目录字符串是否存在物理上对应的目录
Directory.Exists(“c:\\mydir”);
public static string GetCurrentDirectory ()
获取应用程序的当前工作目录
string currentPath=Directory.GetCurrentDirectory( );
Console.WriteLine(“Current Directory is: “+currentPath);
public static void SetCurrentDirectory ( string path )
将应用程序的当前工作目录设置为指定目录
Directory.SetCurrentDirectory(“c:\\”);
public static DateTime GetCreationTime ( string path )
获取目录创建的日期和时间
DateTime dt=Directory.GetCreationTime(Environment.CurrentDirectory);
public static string[] GetDirectories ( string path )
获取指定目录中子目录的名称
string[] sudirectoryEntries=Directory.GetDirectories(“c:\\mydir”);
public static string[] GetFiles ( string path )
获取指定目录中文件的名称
string[] files=Directory.GetFiles(“c:\\mydir”);
public static string[] GetFileSystemEntries ( string path )
获取指定目录中所有文件和子目录的名称
string[] directoryEntries = System.IO.Directory.GetFileSystemEntries(path);
foreach (string str in directoryEntries)
{ System.Console.WriteLine(str); }
public static string[] GetLogicalDrives ()
获取计算机上格式为“<驱动器号>:\”的逻辑驱动器的名称
string[] drives = System.IO.Directory.GetLogicalDrives();
foreach (string str in drives)
{ System.Console.WriteLine(str); }
FileInfo
FileInfo对象表示磁盘或网络位置上的文件
FileInfo aFile=new FileInfo(@”C:\Log.txt”);
FileInfo aFile=new FileInfo(“Data.txt”);
if (aFile.Exists)
Console.WriteLine(“File Exists”);
if (File.Exists(“Data.txt”))
Console.WriteLine(“File Exists”);
public FileStream OpenRead ()
public FileStream OpenWrite ()
public FileInfo CopyTo ( string destFileName )
public FileStream Create ()
public StreamWriter CreateText ()
public StreamReader OpenText ()
public override void Delete ()
public void MoveTo ( string destFileName )
public FileStream Open ( FileMode mode )
FileSystemInfo的属性
-
Attributes
使用FileAttributes枚举,获取或设置当前文件或目录的属性
Archive 文件的存档状态
Compressed 文件已压缩
Device 保留供将来使用
Directory 文件为一个目录
Encrypted 文件或目录是加密的
Hidden 文件是隐藏的
Normal 文件正常,没有设置其它属性
NotContentIndexed 操作系统的内容索引服务不会创建此文件的索引
Offline 文件已脱机
ReadOnly 文件为只读
ReparsePoint 文件包含一个重新分析点
System 文件为系统文件
Temporary 文件是临时文件 -
CreationTime
获取当前文件的创建日期和时间 -
Extension
提取文件的扩展名,为只读属性 -
Exists
判断文件是否存在。只读抽象属性 -
FullName
检索文件的完整路径。只读属性 -
LastAccessTime
获取或设置上次访问当前文件的日期和时间 -
LastWriteTime
获取或设置上次写入当前文件的日期和时间 -
Name
获取文件的名称,只读抽象属性
FileInfo的专用属性
Directory
包含当前文件的目录,仅读
DirectoryName
获取目录完整路径,仅读
Console.WriteLine("{0} has a directory Name of {1}", fileName, fileInfo.DirectoryName);
IsReadOnly
指示文件是否为只读
Length
获取文件的容量,以字节为单位,仅读
DirectoryInfo类
常用方法
public void Create ()
创建目录
DirectoryInfo di=new DirectoryInfo(“c:\\mydir”);
di.Create();
public override void Delete ()
删除directoryInfo及其内容
di.Delete();
public void MoveTo ( string destDirName )
将directoryInfo实例及其内容移到新的路径
di.MoveTo(“c:\\Program files”);
public DirectoryInfo CreateSubdirectory ( string path )
创建一个或多个子目录
DirectoryInfo di=di.CreateSubdirectory(“SubDir”);
public DirectoryInfo[] GetDirectories ()
返回当前目录的子目录
DirectoryInfo[] subdirs=di.GetDirectories( );
public FileInfo[] GetFiles ()
返回当前目录的文件列表
FileInfo[] files=di.GetFiles( );
public FileSystemInfo[] GetFileSystemInfos ()
DirectoryInfo dir = new DirectoryInfo(directory);
FileSystemInfo[] infos = dir.GetFileSystemInfos();
DirectoryInfo的专用属性
Parent
表示包含当前目录的目录, 只读属性
Root
表示包含当前目录的根目录,只读属性
Path类
常用方法
public static string ChangeExtension ( string path, string extension )
更改路径字符串的扩展名
string newPath=Path.ChangeExtension(“c:\\test.txt”,”html”);
public static string Combine ( string path1, string path2 )
合并两个路径字符串
string newPath=Path.Combine(“c:\\”,”mydir”);
public static string GetDirectoryName ( string path )
返回指定路径字符串的目录信息
string dir=Path.GetDirectoryName(“c:\\mydir\\test.txt”);
public static string GetExtension ( string path )
返回指定路径字符串的扩展名
string ext=Path.GetExtension(“c:\\mydir\\test.txt”);
public static string GetFileName ( string path )
返回指定路径字符串的文件名和扩展名
string name=Path.GetFileName(“c:\\mydir\\test.txt”);
public static string GetFileNameWithoutExtension ( string path )
返回不带有扩展名的指定路径字符串的文件名
string name=Path.GetFileNameWithoutExtension(“c:\\mydir\\test.txt”);
public static string GetFullPath ( string path )
返回指定路径字符串的绝对路径
string fullPath=Path.GetFullPath(“test.txt”);
public static string GetTempPath ()
返回当前系统的临时文件夹的路径
string tempPath=Path.GetTempPath( );
public static bool HasExtension ( string path )
确定路径是否包括文件扩展名
bool hasExt=HasExtension(“c:\\mydir\\test.txt”);
Stream类的公有方法
public abstract int Read (byte[], int, int )
public virtual int ReadByte ()
public abstract long Seek ( long, SeekOrigin)
public abstract void SetLength ( long )
public abstract void Write ( byte[], int, int )
public virtual void WriteByte ( byte)