.NET基础 (14)管理文件和文件夹的类型
管理文件和文件夹的类型
1 如何操作文件和文件夹
2 如何实现文件和文件夹的监控功能
管理文件和文件夹的类型
1 如何操作文件和文件夹
.NET内建类中提供了FileInfo和DictionaryInfo两个类型,分别用来操作文件和文件夹。有别于File和Dictionary类型。FileInfo和DictionaryInfo主要的功能在于操作文件和文件夹在文件系统中的结构,完成诸如创建、复制、读取信息、移动、判断是否存在、删除等功能。
示例:
class UseDirectoryInfo
{
static void Main(string[] args)
{
ProcessDirectory();
Console.Read();
}
//操作文件夹的功能
static void ProcessDirectory()
{
DirectoryInfo di = null;
try
{
//创建文件夹
di = new DirectoryInfo("E:\\Test");
di.Create();
//为文件夹添加子文件夹
di.CreateSubdirectory("subdic");
//为子文件夹添加一个文件
FileInfo info = new FileInfo("E:\\Test\\subdic\\text.txt");
using (FileStream fs = info.Create()) { }
//读取文件夹信息
ReadDirectoryInfo(di);
//移动文件夹
di.MoveTo("E:\\Test2");
}
finally
{
if (di != null)
{
//删除文件夹
di.Delete(true); //一起删除子文件和子文件夹,千万小心!!!
}
}
}
//读取文件夹状态信息的功能
static void ReadDirectoryInfo(DirectoryInfo di)
{
Console.WriteLine("文件夹名为:" + di.Name);
Console.WriteLine("父文件夹为:" + di.Parent.Name);
Console.WriteLine("文件夹创建于:" + di.CreationTime);
Console.WriteLine("文件夹最后修改时间:" + di.LastWriteTime);
Console.WriteLine("文件夹最后访问时间:" + di.LastAccessTime);
Console.WriteLine("文件夹全名是:" + di.FullName);
Console.WriteLine("文件夹中的文件:");
FileInfo[] fis = di.GetFiles();
foreach (FileInfo fi in fis)
ReadFileInfo(fi);
Console.WriteLine("文件夹中的子文件夹:");
DirectoryInfo[] dis = di.GetDirectories();
foreach (DirectoryInfo sdi in dis)
ReadDirectoryInfo(sdi);
}
//读取文件状态信息的功能
static void ReadFileInfo(FileInfo fi)
{
Console.WriteLine("文件名为:" + fi.Name);
Console.WriteLine("文件在:" + fi.DirectoryName);
Console.WriteLine("文件的长度: " + fi.Length);
Console.WriteLine("文件创建于:" + fi.CreationTime);
Console.WriteLine("文件最后修改时间:" + fi.LastWriteTime);
Console.WriteLine("文件最后访问时间:" + fi.LastAccessTime);
Console.WriteLine("文件全名是:" + fi.FullName);
Console.WriteLine("文件扩展名是:" + fi.Extension);
}
}
输出:
文件夹名为:Test
父文件夹为:E:\
文件夹创建于:2015/8/16 23:58:21
文件夹最后修改时间:2015/9/10 17:17:09
文件夹最后访问时间:2015/9/10 17:17:09
文件夹全名是:E:\Test
文件夹中的文件:
文件名为:person.txt
文件在:E:\Test
文件的长度: 1092
文件创建于:2015/8/16 23:59:30
文件最后修改时间:2015/8/17 2:02:07
文件最后访问时间:2015/8/16 23:59:30
文件全名是:E:\Test\person.txt
文件扩展名是:.txt
文件夹中的子文件夹:
文件夹名为:subdic
父文件夹为:Test
文件夹创建于:2015/9/10 17:17:09
文件夹最后修改时间:2015/9/10 17:17:09
文件夹最后访问时间:2015/9/10 17:17:09
文件夹全名是:E:\Test\subdic
文件夹中的文件:
文件名为:text.txt
文件在:E:\Test\subdic
文件的长度: 0
文件创建于:2015/9/10 17:17:09
文件最后修改时间:2015/9/10 17:17:09
文件最后访问时间:2015/9/10 17:17:09
文件全名是:E:\Test\subdic\text.txt
文件扩展名是:.txt
文件夹中的子文件夹:
FileInfo和DictionaryInfo的操作涉及资源争用,并且不能保证文件夹或文件的存在,一般所有的操作需要包含在try、catch、finally块内。
2 如何实现文件和文件夹的监控功能
.NET提供了FileSystemWatcher类型俩实现文件系统的监控。通过控制监控目录、控制类型和回调方法,就可以方便地实现监控的功能,但需要小心FileSystemWatcher缓存溢出的情况。
FileSystemWatcher会维护一个内部缓冲来接受文件系统的修改通知,但短时间内文件系统的修改过多时,缓冲就会溢出,导致某些修改被丢失。可以通过InternalBufferSize来修改内部缓存的大小,但这对性能影响非常大,建议从加快处理速度、减小监控范围等方面来避免文件修改事件的丢失。
示例:
class UseFS_fsw
{
//退出程序命令
private const String Exit = "exit";
//监视的文件夹
private const String Folder = "E:\\Test";
private FileSystemWatcher _fsw; public UseFS_fsw()
{
_fsw = new FileSystemWatcher();
//建立检测文件夹
if (Directory.Exists(Folder))
Directory.Delete(Folder, true);
Directory.CreateDirectory(Folder);
_fsw.Path = Folder; //这里选择最后访问文件时间、最后写文件时间、
//文件名、文件夹名变化时,触发事件
_fsw.NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;
//这里选择检测所有的zip文件
_fsw.Filter = "*.zip";
//为这些事件添加处理方法。.
_fsw.Changed += new FileSystemEventHandler(OnChanged);
_fsw.Created += new FileSystemEventHandler(OnChanged);
_fsw.Deleted += new FileSystemEventHandler(OnChanged);
_fsw.Renamed += new RenamedEventHandler(OnRenamed);
//这里开始所有事件会被触发
_fsw.EnableRaisingEvents = true;
} //处理变化时间,变化可以包含创建、修改和删除
private void OnChanged(object source, FileSystemEventArgs e)
{
Console.WriteLine("文件: " +
e.FullPath + " " + e.ChangeType);
}
//处理重命名事件
private static void OnRenamed(object source, RenamedEventArgs e)
{
Console.WriteLine("文件: {0} 重命名为: {1}",
e.OldFullPath, e.FullPath);
} static void Main(string[] args)
{
try
{
UseFS_fsw ws = new UseFS_fsw();
while (Console.ReadLine() != Exit) ;
}
finally
{
//清理测试数据
if (Directory.Exists(Folder))
Directory.Delete(Folder, true);
}
}
}
在文件夹中创建t.zip,重命名为t1.zip,修改内容,删除,输出如下:
文件: E:\Test\t.zip Created
文件: E:\Test\t.zip 重命名为: E:\Test\t1.zip
文件: E:\Test\t1.zip Changed
文件: E:\Test\t1.zip Deleted
转载请注明出处:
作者:JesseLZJ
出处:http://jesselzj.cnblogs.com
.NET基础 (14)管理文件和文件夹的类型的更多相关文章
- Linux命令(14)文件和文件夹权限管理:chmod
linux文件和文件夹权限简介: chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限. Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方 ...
- 探索Windows命令行系列(4):通过命令管理文件和文件夹
1.文件夹操作 1.1.DIR(directory)命令 1.2.TREE 命令 1.3.CD(change directory)命令 1.4.MD(make directory)命令 1.5.RD( ...
- linux:文件及文件夹管理
http://blog.csdn.net/pipisorry/article/details/39854265 查看用户的信息 pika:~$id pikauid=1000(pika) gid=100 ...
- 【Linux/Ubuntu学习 14】Linux下查看文件和文件夹大小
当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小. ...
- Windows 10开发基础——文件、文件夹和库(一)
原文:Windows 10开发基础--文件.文件夹和库(一) 主要内容: 1.枚举查询文件和文件夹 2.文本文件读写的三种方法——创建写入和读取文件 3.获得文件的属性 枚举查询文件和文件夹 先了解一 ...
- 【穿插】Python基础之文件、文件夹的创建,对上一期代码进行优化
在上一期妹子图的爬虫教程中,我们将图片都保存在了代码当前目录下,这样并不便于浏览,我们应该将同一个模特的图片都放在一个文件夹中. 今天我们就简单讲一下Python下如何创建文件.文件夹,今后就可以用上 ...
- Android终端管理器删除文件夹
终端管理器删除文件夹不能用网上提供的: rm -rf 文件夹名 而要用: rm -r 文件夹名. http://blog.csdn.net/enhancing/article/details/8490 ...
- 总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇
本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
- [iOS翻译]《iOS 7 Programming Cookbook》:iOS文件与文件夹管理(下)
三. 创建文件夹 问题: 你想创建文件夹到磁盘,存储一些文件到里面 解决方案: 使NSFileManager类的实例方法createDirectoryAtPath:withIntermediateDi ...
随机推荐
- 【nodeJS】webstorm中设置nodej智能提示
- WCF 快速入门
定义服务契约 构建HelloWCF应用的第一步是创建服务契约.契约式是表示消息应用外形的主要方式.对于外形,是指服务暴露的操作,使用的消息 schema和每个操作实现的消息交换模式(MEP).总之,契 ...
- 20190313_C#反转绘制字符串
效果图: 代码: private void button7_Click(object sender, EventArgs e) { Point p = new Point(10,10); Graphi ...
- Linux(Centos)安装配置SVN服务器
1. 安装SVN服务器: 检查是否已安装 # rpm -qa subversion 安装SVN服务器 # yum install httpd httpd-devel subversion mod_da ...
- tensorflow-eagerAPI
调用该API可以不通过 tensorflow.Session.run()调用 定义的张量constant tensor,可以直接print # -*- coding: utf-8 -*- from _ ...
- 一些linux知识和http知识
1 yum安装比源码编译安装 有的模块不能自定义安装 只能安装默认的模块进行安装 2 关于php的fastcgi 如果使用fastcgi 那么需要启动服务 如果不使用fastcgi 那么不需要启 ...
- 好记性不如烂笔头-linux学习笔记3mysql数据库导入导出
1 数据库文件导出 mysqldump -uroot -p123456 test > 1.sql 2数据库文件导入 mysql -uroot -p123456 test <1.sql 3 ...
- 用dwz时, 由于粗心产生的一些问题(记录方便自己查阅)
在打开"添加" 或 "修改" , 用dialog弹出时 , 点击提交的时候, dialog 不能关闭, 也不能刷新 解决办法: 注意form标签, onsubm ...
- 13 MySQL--存储过程
1.存储过程的介绍 对于存储过程,可以接收参数,其参数有三类: in 仅用于传入参数用 out 仅用于返回值用 inout 既可以传入又可以当作返回值 存储过程包含了一系列可执行的sql语句,存储过程 ...
- pac (PAC(Proxy Auto Config) 是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。)
PAC自动代理文件格式,教你如何写PAC文件 PAC文件格式 PAC文件是纯文本格式的,实际上就是JavaScript文件.Chrome/Chromium的扩展Switchy!的"Auto ...