1. 简介
若要执行此操作... | 请参阅本主题中的示例... |
---|---|
创建文本文件 | 向文件写入文本 |
写入文本文件 | 向文件写入文本 |
读取文本文件 | 从文件读取文本 |
向文件中追加文本 | File.AppendText FileInfo.AppendText |
重命名或移动文件 | File.Move FileInfo.MoveTo |
删除文件 | File.Delete FileInfo.Delete |
复制文件 | File.Copy FileInfo.CopyTo |
获取文件大小 | FileInfo.Length |
获取文件属性 | File.GetAttributes |
设置文件属性 | File.SetAttributes |
确定文件是否存在 | File.Exists |
读取二进制文件 | 对刚创建的数据文件进行读取和写入 |
写入二进制文件 | 对刚创建的数据文件进行读取和写入 |
检索文件扩展名 | Path.GetExtension |
检索文件的完全限定路径 | Path.GetFullPath |
检索路径中的文件名和扩展名 | Path.GetFileName |
更改文件扩展名 | Path.ChangeExtension |
2. 目录操作
System.IO.Directory 和 System.IO.DirectoryInfo
//获取目录
string[] drives = Directory.GetLogicalDrives(); //本地驱动器的名,如:C:\等
string path = Directory.GetCurrentDirectory(); //获取应用程序的当前工作目录
Directory.GetFileSystemEntries //获取指定目录中的目录及文件名
Directory.GetLogicalDrives //检索此计算机上格式为“<驱动器号>:\”的逻辑驱动器的名称,【语法同上】
Directory.GetParent //用于检索父目录的路径。
Path.GetFileName(@"c:\dir\file.txt"); //获取子目录的名字,result的结果是file.txt
FileInfo[] texts = Directory.GetFiles(".txt"); //获取指定目录中的文件名(文件列表)
//创建目录
DirectoryInfo d=Directory.CreateDirectory("c:\\sixAge"); // 创建目录c:\sixAge
DirectoryInfo d1=d.CreateSubdirectory("sixAge1"); // d1指向c:\sixAge\sixAge1
DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1"); // d2指向c:\sixAge\sixAge1\sixAge1_1
Directory.SetCurrentDirectory("c:\\sixAge"); // 将当前目录设为c:\sixAge
//判断
if (di.Exists == false) //检查是否存在此目录
//删除
DirectoryInfo dis = di.CreateSubdirectory("SubDir"); //以相对路径创建子目录
dis.Delete(true); //删除刚创建的子目录
di.Delete(true); //删除创建目录
//递归删除文件夹及文件
public void DeleteFolder(string dir)
{
if (Directory.Exists(dir)) //如果存在这个文件夹删除之
{
foreach(string d in Directory.GetFileSystemEntries(dir))
{
if(File.Exists(d))
File.Delete(d); //直接删除其中的文件
else
DeleteFolder(d); //递归删除子文件夹
}
Directory.Delete(dir); //删除已空文件夹
Response.Write(dir+" 文件夹删除成功");
}
else
Response.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示
}
3. 文件操作
System.IO.Directory , System.IO.DirectoryInfo, System.IO.File , System.IO.FileInfo, System.IO.StremWriter, System.IO.StremReader3.1 base
//创建,打开
StreamWriter sw = File.CreateText(path) //创建并写入(将覆盖已有文件)
//读
StreamReader sr = File.OpenText(path);
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
//写
StreamWriter sw = File.CreateText(path);
sw.WriteLine("Hello");
//移动
Directory.Move(@"f:\bbs\1", @"f:\bbs\2"); //将文件夹1内的文件剪到文件夹2内 文件夹2是刚创建的
//复制
File.Copy(path, @"f:\tt.txt");
//删除
File.Delete(path);
3.2 Stream Operations
Stream // 对字节的读写操作(包含对异步操作的支持) Reading Writing Seeking
BinaryReader和BinaryWriter // 从字符串或原始数据到各种流之间的读写操作
FileStream类通过Seek()方法进行对文件的随机访问,默认为同步
TextReader和TextWriter //用于gb2312字符的输入和输出
StringReader和StringWriter //在字符串中读写字符
StreamReader和StreamWriter //在流中读写字符
BufferedStream 为诸如网络流的其它流添加缓冲的一种流类型.
MemoryStream 无缓冲的流
NetworkStream 互联网络上的流
private const string name = "Test.data";
public static void Main(String[] args)
{
//打开文件() ,或通过File创建立如:fs = File.Create(path, 1024)
FileStream fs = new FileStream(name, FileMode.CreateNew);
//转换为字节 写入数据(可写入中文)
Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
//字节数组,字节偏移量,最多写入的字节数
fs.Write(info, 0, info.Length);
w.Close();
fs.Close();
//打开文件
fs = new FileStream(name, FileMode.Open, FileAccess.Read);
//读取
BinaryReader r = new BinaryReader(fs);
for (int i = 0; i < 11; i++)
{
Console.WriteLine(r.ReadInt32());
}
w.Close();
fs.Close();
}
4. 参考
(1)C#对于文件操作
(2)浅析C#中的文件操作