发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
C#的IO类库提供了丰富的IO操作,下面我来总结一下其IO类库提供的一些操作文件系统的方法
一.操作驱动器C#用DriveInfo来操作驱动器1.创建对象a.我们可以通过静态方法DriveInfo.GetDrives()来获取所有的Driver。b.可以以Drive Letter为参数新建DriveInfo对象,注意DNS路径不能作为参数。c.此外,我们还可以通过Directory.GetLogicalDrives()先获取机器上所有Driver的Driver letter,再用它新建DriveInfo对象以操作所有的Driver。
2.获取驱动器的状态我们通过DriveInfo对象来获取驱动器的状态,可以获取的状态有AvailableFreeSpace:获取当前用户被分配的可用空间大小(bytes)TotalFreeSpace:获取所有可用空间大小(bytes)TotalSize:获取总大小(bytes)DriveFormat:返回FAT, NTFS等值DriveType:返回DriveType类型的Enum值,可以是CDRom, Fixed, Network, NoRootDirectory, Ram, Removable,或者UnknownIsReady:对Removable和CD-ROM来说只有相应的设备可以访问了才返回true,当该属性为false时,很多其他属性无法获取Name:盘符名RootDirectory:返回Driver所代表的路径的Directory对象。VolumeLabel:返回VolumeLabel信息,VolumeLabel就是咱自己对盘符定义的名字
二.操作文件夹C#提供了DirectoryInfo和Directory两个类来操作文件夹,这两个类提供了很多相同的方法,他们的区别在于DirectoryInfo是先构造一个文件夹对象,再对这个对象进行操作。而Directory提供的大多数都是静态函数,这样能够直接根据给定的文件夹路径进行相应的操作。在对文件夹进行多个操作时最好用DirectoryInfo,而只进行一个操作,最好用Directory。1.构造对象DirectoryInfo需要先构造文件夹对象,再获取文件夹属性,或者对文件夹进行操作。它的构造方法不负责判断路径是否存在。Directory不需要构造文件夹对象,直接传入文件夹的路径进行操作
2.判断文件夹是否存在DirectoryInfo对象可通过查看Exists属性查看文件夹是否存在Directory可通过Exists方法查看文件夹是否存在
3.获取文件夹属性注意,在用DirectoryInfo和Directory类获取文件夹属性前最好先判断其是否存在对DirectoryInfo对象,在获取文件夹属性前应先用refresh函数刷新,可以访问文件夹的下列属性:Attributes:archive, compressed, directory, hidden, offline, read-only, system, 和temporary的或值CreationTimeCreationTimeUtcLastAccessTimeLastAccessTimeUtcLastWriteTimeLastWriteTimeUtc
Directory也可获取上述属性,不过是用静态函数获取,另外Directory也不支持获取Attribute。SetCreationTime SetCreationTimeUtc SetLastAccessTime SetLastAccessTimeUtc SetLastWriteTime SetLastWriteTimeUtc GetCreationTime GetCreationTimeUtc GetLastAccessTime GetLastAccessTimeUtc GetLastWriteTime GetLastWriteTimeUtc
4.路径操作DirectoryInfo和Directory类都支持路径操作,这些操作只针对传入的路径字符串,和文件夹是否存在无关DirectoryInfo有下面一些属性NameExtensionFullNameParentRoot
Directory有下面一些方法GetParent:获取父目录的DirectoryInfo对象GetDirectoryRoot
5.新建,移动,删除文件夹DirectoryInfo和Directory类都支持文件夹的新建,移动,删除DirectoryInfo的方法Create,CreateSubdirectory,Delete,MoveTo
Directory的方法CreateDirectory Delete Move
6.遍历文件夹下的内容DirectoryInfo和Directory类都支持遍历文件夹下的内容,而且都支持通过传入searchpattern和searchOption来定义遍历的行为,对于searchpattern,*匹配一个或多个字符,?匹配一个字符。searchOption的值是TopDirectory或AllDirectories,用来控制匹配的时候要不要包括子目录。DirectoryInfo的方法:EnumerateDirectoriesEnumerateFilesEnumerateFileSystemInfosGetDirectoriesGetFilesGetFileSystemInfos
Directory的方法GetDirectories GetFiles GetFileSystemEntriesEnumerateDirectories EnumerateFiles EnumerateFileSystemEntries
7.获取和设置当前的工作路径Directory有两个重要的方法:GetCurrentDirectory:获取当前的工作路径SetCurrentDirectory:设置当前的工作路径
三.操作文件C#提供了FileInfo和File两个类来操作文件,这两个类提供了很多相同的方法,他们的区别在于FileInfo是先构造一个文件对象,再对这个对象进行操作。而File提供的大多数都是静态函数,这样能够直接根据给定的文件路径进行相应的操作。在对文件进行多个操作时最好用FileInfo,而只进行一个操作,最好用File。1.构造对象FileInfo需要先构造文件对象,再获取文件属性,或者对文件进行操作。它的构造方法不负责判断路径是否存在。File不需要构造文件对象,直接传入文件的路径进行操作
2.判断文件是否存在FileInfo对象可通过查看Exists属性查看文件是否存在File可通过Exists方法查看文件是否存在
3.获取文件属性注意,在用FileInfo和File类获取文件属性前最好先判断其是否存在对FileInfo对象,在获取文件属性前应先用refresh函数刷新,可以访问文件的下列属性:Attributes:archive, compressed, directory, hidden, offline, read-only, system, 和temporary的或值CreationTimeCreationTimeUtcLastAccessTimeLastAccessTimeUtcLastWriteTimeLastWriteTimeUtcLength:文件大小IsReadOnly
File也可获取上述属性,不过是用静态函数获取GetAttributes SetAttributes SetCreationTime SetCreationTimeUtc SetLastAccessTime SetLastAccessTimeUtc SetLastWriteTime SetLastWriteTimeUtc GetCreationTime GetCreationTimeUtc GetLastAccessTime GetLastAccessTimeUtc GetLastWriteTime GetLastWriteTimeUtc
4.路径操作FileInfo提供了一些路径操作,这些操作只针对传入的路径字符串,和文件是否存在无关FileInfo有下面一些属性NameExtensionFullNameDirectory:返回DirectoryInfo对象DirectoryName ParentRoot
5.新建,移动,删除文件FileInfo和File类都提供了新建,移动,删除文件操作FileInfo的方法:CopyToCreateDeleteMoveToReplace
File的方法Copy CreateDelete Move Replace
6.加密解密文件FileInfo和File类都提供了Encrypt和Decrypt方法用来加密和解密文件,用某个用户加密的文件只有同一个用户能解密
四.监听文件夹C#有个很有趣的类,FileSystemWatcher,这个类可以用来监听文件夹内文件的增加,删除,修改等事件。1.定制监听的信息通过设置FileSystemWatcher的一些属性来定制监听的信息Path:监听的目录NotifyFilter:用来设置对哪些类型的更改进行监视监视的类型为FileName,DirectoryName,Attributes,Size,LastWrite,LastAccess,CreationTime,Security的或值。默认为LastWrite, FileName, DirectoryName的或值InternalBufferSize:内部缓存区的大小,默认8KB,最小4KB,最大64KBFilter:可以用通配符过滤文件,*匹配一个或多个字符,?匹配一个字符IncludeSubdirectories:是否监听子目录
2.定制事件发生后的行为文件夹里会发生下述事件ChangedCreatedDeletedRenamed我们通过给这些事件加事件处理器来处理事件另外还可以用WaitForChanged来监听某个指定类型的消息然后返回
3.启动监听只有当EnableRaisingEvents为true且Path有值时,才能监听成功,当我们将所有信息设置好后,就可以通过设置这个值启动和停止监听了
4.用BeginInit和EndInit来阻止component在初始化完成前使用,一般将一系列的操作写在这两个函数之间。
5.在Form中定义的时候必须将Form控件赋给SynchronizingObject属性
6.简单的示例:
监听"C:\jingle"文件夹下面所有文件和文件夹的重命名操作
[PermissionSet(SecurityAction.Demand, Name="FullTrust")] public static void Run() { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = "c:\\jingle"; watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName; watcher.IncludeSubdirectories = true; watcher.Filter = "*.*"; watcher.Renamed += new RenamedEventHandler(OnRenamed); watcher.EnableRaisingEvents = true; Console.Read(); } private static void OnRenamed(object source, RenamedEventArgs e) { Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath); }
来自: 昵称10504424 > 《C#》
0条评论
发表
请遵守用户 评论公约
C#2010 在TreeView控件下显示路径下所有文件和文件夹
DirectoryInfo类
例如,获得F:\test\0000\目录下文件夹AA的创建日期和时间,首先将DirectoryInfo实例化,然后通过CreationTime属性得到此文件夹的创建日期和时间。DirectoryInfo di = new DirectoryInfo(Paths);例如,...
C#文件操作
C#文件操作C#文件操作Apr092012作者:落落 发布:2012-04-09 15:19 分类:.Net开发, 我的博客, 编程笔记 1条评论 文章顶部声明:原创文章转载请留名,不留名者没有xx(自行脑补OvO本站采用 BY-N...
C#使用文件基础
在System.IO名称空间中包含了用于文件输入输出的主要类。这会节省时间,因为对象将在文件系统上引用正确的文件,而静态类就必须每次都寻找文件。DirectoryInfo类与FileInfo类共享几乎所有相同的属性,D...
VB.NET中获取指定文件夹中的文件及路径 VB.NET
VB.NET中获取指定文件夹中的文件及路径 VB.NET.如何获取某一文件夹下的指定类型的文件以及路径?这里只给出示例代码,供需要的朋友,当然还有我自己参考。Dim myfileInfos As FileInfo()Dim instance...
VB.NET中获取指定文件夹中的文件及路径
VB.NET中获取指定文件夹中的文件及路径 如何获取某一文件夹下的指定类型的文件以及路径?这里只给出示例代码,供需要的朋友,当然还有我自己参考。Dim myfileInfos As FileInfo()Dim instance A...
asp.net 跑马灯 怎样从文件夹里读取图片
asp.net 跑马灯 怎样从文件夹里读取图片问:asp.net 跑马灯 怎样从文件夹里读取图片,怎样实现?
C#删除文件夹
C#删除文件夹 DirectoryInfo di = new DirectoryInfo(string Path); di.Delete(true);
C#压缩解压zip 文件
微信扫码,在手机上查看选中内容