文件和流操作
磁盘、目录、文件的基本操作
文本文件的读取和写入
二进制文件的读取和写入
随机文件访问
流提供一种向后备存储写入字节和从后备存储读取字节的方式
对于流有5种基本的操作:
打开
读取
写入
改变当前位置
关闭
DriveInfo类提供方法和属性以查询驱动器信息
确定可用的驱动器及其类型、驱动器的容量和可用空闲空间等
DriveInfo[] allDrives = DriveInfo. GetDrives();
Console.WriteLine("驱动器 {0}", d.Name);
Console.WriteLine(" 类型: {0}", d.DriveType);
if (d.IsReady == true)
{
Console.WriteLine(" 卷标: {0}", d.VolumeLabel);
Console.WriteLine(" 文件系统: {0}", d.DriveFormat);
Console.WriteLine(" 当前用户可用空间: {0, 15}字节", d.AvailableFreeSpace);
Console.WriteLine(" 可用空间: {0, 15}字节", d.TotalFreeSpace);
Console.WriteLine(" 磁盘总大小: {0, 15}字节", d.TotalSize);
}
Directory类和DirectoryInfo类提供用于目录基本操作的方法:
创建、复制、移动、重命名和删除目录
获取和设置目录的创建、访问及写入的时间戳信息等
Directory所有方法都是静态的
DirectoryInfo类提供实例方法
判断目录是否存在:bool b1 = Directory.Exsits(@”c:\src”);
DirectoryInfo di = new DirectoryInfo (@”c:\src”); bool b2 = di.Exists;
创建目录:Directory di2 = Directory.CreateDirectory(@”c:\src”);
删除目录:Directory. Delete(path2, true);
移动目录:Directory. Move(@”c:\src”, @”c:\src1”);
获取目录中子目录/文件:
string[] sdirs1 = Directory. GetDirectories(path1);
File类(静态方法)和FileInfo类(提供实例方法)提供用于文件基本操作的方法
创建、复制、移动、重命名和删除文件
打开文件,读取文件内容和追加内容到文件
获取和设置文件的创建、访问及写入的时间戳信息等
判断文件是否存在:bool b1 = File.Exsits(@”c:\src\test.txt”);
FileInfo fi = new FileInfo (@”c:\src\test.txt”); bool b2 = fi.Exists;
创建文件/打开文件:Create/Open/CreateText
删除文件:File. Delete(path);
复制文件:File. Copy(@”c:\src\test.txt”, @”c:\src\test1.txt”);
移动文件:File. Move(@”c:\src\test.txt”, @”c:\src\test1.txt”);
1.创建StreamWriter对象(打开文本文件)
2.写入字符数据到文本文件
3.关闭流(关闭文件)
1.创建StreamReader对象(打开文本文件)
2.从打开的文本文件中读取字符数据
3.关闭流(关闭文件)
private const string FILE_NAME = @"c:\temp\TestFile.txt";
//创建StreamWriter实例以在文件中添加文本
using (StreamWriter sw = new StreamWriter(FILE_NAME))
{ //在文件中添加文本
sw.Write("文本文件"); sw.WriteLine("的写入/读取示例:");
sw.WriteLine("----------------------------------");
sw.WriteLine("写入整数 {0} 或浮点数 {1}", 1, 4.2);
bool b = false; char grade = 'A'; string s = "Multiple Data Type!";
sw.WriteLine("写入Boolean值、字符、字符串、日期:");
sw.WriteLine(b); sw.WriteLine(grade); sw.WriteLine(s);
sw.Write("当前日期为:"); sw.WriteLine(DateTime.Now);
}
private const string FILE_NAME = @"c:\temp\TestFile.txt";
public static void Main(String[] args)
{
try
{ //创建StreamReader实例以从文本文件中读取内容.
using (StreamReader sr = new StreamReader(FILE_NAME))
{
String line;
//读取文本文件每一行的内容,直至文件结束
while ((line = sr.ReadLine()) != null){ Console.WriteLine(line); }
}
}
catch (Exception e) { Console.WriteLine(e.Message); } // 异常处理
BinaryReader类和BinaryWriter类在 Streams 中读取和写入编码的字符串和基元数据类型
创建BinaryWriter对象(打开二进制文件)
FileStream fs = File.Open(@”Test.dat”, FileMode.Open);
BinaryWriter bw = new BinaryWriter(fs);
写入二进制数据到文本文件
关闭流(关闭文件)
……
FileStream类支持通过其Seek方法随机访问文件
Seek通过字节偏移量将读写位置移动到文件中任意位置
SeekOrigin.Begin
SeekOrigin.Current
SeekOrigin.End
fs.Seek(0,SeekOrigin.Begin)
BufferedStream 是向另一个 Stream(例如 NetworkStream)添加缓冲的 Stream
CryptoStream 将数据流链接到加密转换
MemoryStream 是一个非缓冲的流,可以在内存中直接访问它的封装数据。该流没有后备存储,可用作临时缓冲区
NetworkStream 表示网络连接上的 Stream