C#中的文件操作

  • 文件操作中的常见类:

静态类

File类:提供很多静态方法,用于移动、复制和删除文件。

Directory类:用于移动、复制和删除目录。

Path类:用于处理与路径相关的操作。

实例类

FileInfo类:表示磁盘或网络位置上的文件,提供一个文件路径就可以创建一个FileInfo对象。

DirectoryInfo类:表示计算机上的单一目录。

获取和设置当前工作目录:

当前工作目录很重要,一般是文件查找和定位的起始点。可以使用Directory.GetCurrentDirectory()找出工作目录的当前设置,也可以使用Drectory.SetCurrentDirectory()设置新的工作目录。

所有的输入和输出操作都要用到流。流(stream)是序列化设备(serial device)的抽象表示。序列化设备可以以线性的方式存储数据,并可按同样的方式访问:一次访问一个字节。此设备可以是磁盘文件、网络通道、内存位置或其他任何支持以线性方式读写的对象。流是数据传输、读写的主要形式,是对底层的高度抽象。非常重要的一个概念。

FileStream对象:表示指向磁盘或网络路径上的文件的流。操作的是字节和字节数组。File和FileInfo类都提供了OpenRead()和OpenWrite()方法,更易于创建FileStream对象。

FileStream aFile = File.OpenRead(“Data.txt”);

aFile.Seek(8, SeekOrigin.Begin); 将文件指针移到文件的第8个字节处,其起始位置就是文件的第一个字节。

FileStream.Read()方法是从FileStream对象所指向的文件中访问数据的主要手段。

StreamReader:从流中读取字符数据,可以使用FileStream作为基类创建。ReadLine()读取一行数据;读取最简单的方法是Read()。此方法将流的下一个字符作为正整数返回,如果到达了流的结尾处,则返回-1。使用Convert实用类可以把这个值转换为字符。对于小型文件,可使用一个非常简单的方法Read2End()。此方法读取整个文件,并将其作为字符串返回。但该方法不是任何时候都可用的,特别是很大文件的时候。

StreamWriter:向流中写入字符数据,可以使用FileStream作为基类创建

  • 读写压缩文件

System.IO.Compression名称空间中有两个压缩流类DeflateStream和GZipStream,它们的工作方法非常类似。

GZipStream compressionStream = new GZipStream(fileStream, CompressionMode.Compress);

StreamWriter writer = new StreamWriter(compressionStream);

  • 监控文件系统

FileSystemWatcher类可以用于监控,首先必须设置一些属性,指定监控的位置、内容以及引发应用程序要处理的事件的时间。可以监控文件和目录,如有必要,还可以提供一个过滤器,根据需要仅修改有特定扩展名的文件。FileSystemWatcher实例通过触发事件,来通知我们发生了变化,这些事件可以在代码中处理。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Console2
{
class Program
{
static void Main(string[] args)
{
//创建一个新的FileSystemWatcher并设置其属性  
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"D:\tmp";
/*监视LastAcceSS和LastWrite时间的更改以及文件或目录的重命名*/
watcher.NotifyFilter = NotifyFilters.LastWrite;
//只监视文本文件  
watcher.Filter = "*txt";
//添加事件句柄  
//当由FileSystemWatcher所指定的路径中的文件或目录的  
//大小、系统属性、最后写时间、最后访问时间或安全权限  
//发生更改时,更改事件就会发生  
watcher.Changed += new FileSystemEventHandler(OnChanged);
//由FileSystemWatcher所指定的路径中文件或目录被创建时,创建事件就会发生  
watcher.Created += new FileSystemEventHandler(OnChanged);
//当由FileSystemWatcher所指定的路径中文件或目录被删除时,删除事件就会发生  
watcher.Deleted += new FileSystemEventHandler(OnChanged);
//当由FileSystemWatcher所指定的路径中文件或目录被重命名时,重命名事件就会发生  
watcher.Renamed += new RenamedEventHandler(OnRenamed);
//开始监视  
watcher.EnableRaisingEvents = true;
//等待用户退出程序  
Console.WriteLine("Press q to quit...");
while (Console.Read() != 'q') ;
}
//定义事件处理程序  
public static void OnChanged(object sender, FileSystemEventArgs e)
{
//指定当文件被更改、创建或删除时要做的事  
Console.WriteLine("file: "+e.FullPath+" "+e.ChangeType);
}
public static void OnRenamed(object sender, RenamedEventArgs e)
{
//指定当文件被重命名时发生的动作  
Console.WriteLine("file:{0} renamed to {1}.", e.OldFullPath, e.FullPath);
}
} }

  

最新文章

  1. 【JUC】JUC锁框架综述
  2. NDK中可靠的获取JNIEnv*的方法
  3. 浅谈可扩展性框架:MEF
  4. 全排列(java版)
  5. 硬盘坏道 检测/修复 Windows
  6. hdu 4301(基本dp)
  7. zzzzz
  8. HDU 4483 Lattice triangle(欧拉函数)
  9. Kaggle Bike Sharing Demand Prediction – How I got in top 5 percentile of participants?
  10. nginx使用keepalived实现高可用
  11. 梅特卡夫法则(Metcalfe's law)
  12. 浅谈SQL Server中的三种物理连接操作(HASH JOIN MERGE JOIN NESTED LOOP)
  13. 度分秒转换十进制度 之Excel实现
  14. H5上传功能
  15. oracle 创建表空间 与创建用户与分配用户权限
  16. Asp.Net MVC参考资料
  17. angularJS DOM element() $compile()
  18. 查看oracle实例名
  19. 20 个常用的 CSS 技巧
  20. http协议简析(一)

热门文章

  1. WinForm/MIS项目开发之中按钮级权限实践
  2. 你不知道的this—JS异步编程中的this
  3. Linux安装搜狗拼音输入法
  4. 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
  5. 简单的网络引导安装CentOS7
  6. Ado.Net事物处理
  7. web api :Action Results in Web API 2
  8. CSS3 justify 文本两端对齐
  9. MyEclipse10的一些问题(git插件,jdk7)
  10. BZOJ4078 : [Wf2014]Metal Processing Plant