文件和注册表
1. 管理文件系统
System.MarshalByRefObject
FileSystemInfo— 表示任何文件系统对象的基类
FileInfo 和 File— 表示文件系统上的文件
DirectoryInfo 和 Directory— 表示文件系统上的文件夹
Path— 这个类的静态成员可以用于处理路径名
DriverInfo— 指定驱动器的信息
1.1 表示文件和文件夹的 .NET 类
Directory 和 File :只包含静态方法, Directory 表示文件夹, File 表示文件
DirectoryInfo 和 FileInfo :和 Directory 和 File 有大致相同的方法,不过他们的成员的实例的 .
部分属性:
DirectoryName ( 仅用于 FileInfo) :包含文件夹的完整路径名
Parent (仅用于 DirectoryInfo ):指定子目录的父目录
Length (仅用于 FileInfo ):返回文件的大小
部分方法:
GetDirectories () :(仅适用于 DirectoryInfo )返回 DirectoryInfo 对象数组,表示该文件夹包含的所有文件夹
GetFiles () :仅适用于 DirectoryInfo )返回 FileInfo 对象数组,表示该文件夹包含的所有文件
1.2Path 类
常用方法: Path.Combline(@“C:/”,”TT.txt”) 用于处理路径,因为不同操作系统的路径表现形式系不同的
2 移动、复制和删除文件
1.文件夹只可以在同一根路径移动,即不可在不同的盘符移动文件夹.
2.文件夹没有复制方法,只有文件才有复制方法,所以要复制文件夹,要逐一复制文件夹下的文件.
3.f.CopyTo(@"F:/b/"+f.Name, true);如果文件夹F:/b不存在,则提示错误:未能找到路径“F:/b/ss.torrent”的一部分。
3. 读写文件
3.1 读取文件
String s=File.ReadAll(string path,Encoding);
3.2 写入文件
File.WriteAll(string fromPath,string toPath)
注意:该方法会创建一个新文件,把内容复制。如存在相同文件,则会完全覆盖 .
4. 流
System.IO.MemoryStream: 读写内存
System.Net.Sockets.NetworkStream: 处理网络数据
System.IO.Stream: 一般的流类,读写管道的流
文件读写常用的类:
FileStream :在二进制文件中读写二进制数据,也可以读写任何文件。
StreamReader 和 SteramWriter :专门用于读写文本文件
BinaryReader 和 BinaryWriter :提供其他流对象的包装,把他们放在流和代码之间,进行额外的格式化。????
4.1 缓存的流
BufferStream :??
4.2 读写二进制文件
1.FileStream 类:
FileSteam fs=new FileSteam(string path,FileMode,FileAccess,FileShare)
其中第三、第四个参数默认为 ReadWrite 和 Read
用完后: fs.Close()
Int NextByte=fs.ReadByte();// 读取一个字节,把结果返回 0-255 的一个整数,如果到达该流的末尾,返回 -1.
Int ByteRead=fs.ReadByte(ByeArray,0,count)// 把一定数量的字节读入到 byte 数组 ByteArray. 如果 ByteRead=0 代表到达该流的末尾 .
int bufferLen=4096;
byte[] buffer=new byte[bufferLen];
int count=0;
while((count=fs.Read(buffer,0,4096))>0) //Read方法把流的内容写进buffer,每次写进4096字节,该方法返回写进buffer的字节 数,如果到达流的末尾,则返回零
{
targetStream.Write(buffer,0,count);//把buffer的内容写进流,每次写入count字节,该方法返回空值
}
targetStream.Close();
fs.Close();
4.3 读写文本文件
StreamWriter 和 StreamReader: 包含了文本文件换行符的处理,如用 FileStream 则要自己处理。
StreamReader :
StreamReader sr=new StreamReader ( string path,Encoding )
FileInfo myFile=new FileInfo(string path);
StreamReader sr=myFile.OpenText();
部分方法:
ReadLine ():读取一行
ReadToEnd(): 读取剩余的行
Read ():读取一个字符
Read ( ByteArray 【】 array ,偏移量,长度) : 把一定的字节读入 array
StreamWriter :
StreamWriter sw=new StreamWriter(string path,bool (是否用追加的方式写入文件), Encding (编码方式) )
Sw.WriteLint(string s);// 把字符窜写入流
FileStream fs=new FileStream(@“C:/DD.txt”,FileMode,FileAccess,FileShare);
StreamWriter sw=new StreamWriter(fs);
方法:
Write ():读入一行字符窜 一个字符 字符数组或者一部分
4. 读取驱动器信息
DriveInfo 类
5. 文件的安全性
Using System.Security.AccessControl
5.1 从文件读取 ACL
FileSteram fs=new FileSream(….);// 实例化流
FileSecurity fileSec=fs.GertAccessControl();
Foreach(FileSystemAccessRule fileRule in fileSec.GetAccessRule(……….))
{
}
5 . 2 从目录读取 ACL
DirectoryInfo myDir=new DirectoryInfo(string path);
DirectorySecurity dirSec= myDir.GertAccessControl();
Foreach(FileSystemAccessRule fileRule in fileSec.GetAccessRule(……….))
{
}
5.3 添加和删除文件中的 ACL
1. 实例化 FileSystemAccessRule
2.FileSecurity.AddAccessRule ( FileSystemAccessRule rule )
3.File.SetAccessControl( 文件路径名, FileSecurity fs)
删除文件中的 ACL
FileSecurity.RemoveAccessRule ( FileSystemAccessRule rule )
6. 读写注册表