一 System.IO
① System.IO名字空间;
② 提供了许多用于;
③ 文件和数据流进行读写操作的类;
二 流的分类
1 Stream类
按存取位置分:FileStream,MemeryStream,BufferedStream;
2 读写类
BinaryReader和BinaryWriter;
TextReader和TextWriter;
StreamReader和StreamWriter;
StringReader和StringWriter;
3 其关系
FileStream fs=new FileStream(@“c:\temp\foo.txt”,FileMode.Create);
StreamWriter writer=new StreamWriter(fs);
三 文件及文件及管理
1 对文件和文件夹操作的类
① FileInfo 具体的文件;
② File 提供static方法;
③ DirectoryInfo 具体的文件夹;
④ Directory 提供static方法;
⑤ FileSystemInfo 是FileInfo及DirectoryInfo的父类;
⑥ path 文件路径类;
2 显示文件及文件夹的信息
① 使用FileInfo对象,就可以获取文件大小等各种信息;
② 使用DirectoryInfo对象,就可以获取文件夹大小等各种信息;
3 FileInfo对象及属性
1) 建立对象
new FileInfo 文件物理路径;
2)常用属性
① Name 文件名称;
② Extension 文件扩展名;
③ FullName 文件完全路径(物理路径)
④ Length 文件大小,单位为字节
⑤ CreationTime 文件创建时间;
⑥ LastAccessTime 文件上次访问时间;
⑦ LastWriteTime 文件上次修改时间;
⑧ DirectoryName 所在文件夹;
⑨ Attributes 文件属性、如只读、隐藏等;
4 DirectoryInfo 对象及其属性
1) 建立对象
new DirectoryInfo 文件物理路径;
3) 常用的属性:
① Name 文件夹名称;
② FullName 文件夹完全路径(物理路径);
③ CreationTime 文件夹创建时间;
④ LastAccessTime 文件夹上次访问时间;
⑤ LastWriteTime 文件夹上次修改时间;
⑥ Parent 父文件夹;
⑦ Root 所在根目录;
5 文件的新建、复制、移动和删除
1) 使用File类的static方法既可完成对文件的操作
① Create(filePath);
② Copy(filePath1,filePath2);
③ Move(filePath1,filePath2);
④ Delete(filePath);
⑤ Exists(filePath);
⑥ CreateText(filePath);
2) 文件夹的新建、移动和删除
使用Directory的static方法可以完成对文件的操作。
① CreateDirectory(DirPath);
② Move(DirPath1,DirPath2);
③ Delete(DirPath);
④ Exists(DirPath);
⑤ GetDirectories(DirPath);
⑥ GetFiles(DirPath);
3) 显示指定文件夹下的子文件夹和子文件
使用Directory
GetDirectories和GetFiles的static方法。
使用DirectoryInfo对象
GetDirectories和GetFiles实例方法;
这两个方法分别返回DirectoryInfo对象数组和FileInfo对象数组。
4) Path类 提供路径的处理
① Combine;
② GetDirectoryName;
③ GetExtension;
④ GetFileName;
⑤ GetFileNameWithoutExtension;
⑥ GetFullPath;
⑦ GetPathRoot;
⑧ GetTempFileName;
⑨ GetTempPath;
搜索文件夹下所有的文件
递归列出所有文件
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 递归列出所有文件
{
class Program
{
public static void Main(string[] args)
{
ListFiles(new DirectoryInfo(@"C:\Users\quyua\Desktop\200个WinForm实例源码"));
Console.ReadKey();
}
public static void ListFiles(FileSystemInfo info)
{
if (!info.Exists)
return;
DirectoryInfo dir = info as DirectoryInfo;
if (dir == null)
return;//不是根目录
FileSystemInfo[] files = dir.GetFileSystemInfos();
for(int i=0;i<files.Length;i++)
{
FileInfo file = files[i] as FileInfo;
if(file!=null) //是文件
{
Console.WriteLine(file.FullName + "\t" + file.Length);
}
else//是目录
{
ListFiles(files[i]);//对于子努力,进行递归调用
}
}
}
}
}
监视文件的变化Watcher
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 监视文件的变化Watcher
{
public class Program
{
public static void Main()
{
const string path = @"C:\Users\quyua\Desktop\200个WinForm实例源码";
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = path;
watcher.Filter = "*.exe";
watcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite | NotifyFilters.FileName |
NotifyFilters.DirectoryName;
//事件处理函数
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
//开始监视
watcher.EnableRaisingEvents = true;
//等待用户输入q才结束程序
Console.WriteLine("Press 'q' to quit the sample.");
while (Console.Read() != 'q') ;
Console.ReadKey();
}
//事件处理函数
public static void OnChanged(object source,FileSystemEventArgs e)
{
//显示哪些文件做了何种修改
Console.WriteLine("File:" + e.FullPath + " " + e.ChangeType);
}
public static void OnRenamed(object source ,RenamedEventArgs e)
{
//显示被更改的文件名
Console.WriteLine("File:{0}renamed to{1}", e.OldName, e.FullPath);
}
}
}