C# IO及文件管理
一 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);
}
}
}
相关文章
- JavaScript日历控件开发 C# 读取 appconfig文件配置数据库连接字符串,和配置文件 List<T>.ForEach 调用异步方法的意外 ef 增加或者更新的习惯思维 asp.net core导入excel 一个二级联动
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- Word控件Spire.Doc 【页面背景】教程(2) ;C在 C#、VB.NET 中为 Word 添加页面边框
- c# 字符串加掩码,隐藏部分字符串
- NodeJS应用程序设置为window service-辅助工具(C#)
- c# 执行批处理文件
- C#【文件操作篇】S19文件转bin文件
- C#泛型委托的概念及实例解析
- c#中将HTML文件转换成PDF文件
- c#调用api(FindFirstFile,FindNextFile)高效遍历目录文件【转载】
- 用c#开发微信 系列汇总
- C# 删除文件以及文件夹
- C#查询数组中是否存在某元素(转载)
- C# 文件流读写方法汇总
- C#删除文件和文件夹到回收站
- C#-获取文件夹下的所有文件
- C# xml文件的创建,修改和添加节点 。
- C#-IO-文件读写并显示文件读取进度
- C#-IO-读写文本txt文件中的数据
- C# 异步下载文件
- 【WPF】C#代码动态添加控件的Margin属性
- C#与.NET Framework c#编程语言,和java是一样的。(c#,java) -->javaweb,asp.net
- C#与java的区别(继承,接口实现,指针,编译后形式,异常处理几个方面比较区别)