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);
}
} }

  

C# 文件操作笔记的更多相关文章

  1. python文件操作笔记

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.切换工作目录: os.c ...

  2. C的文件操作---笔记

    打开文件  FILE *fp = fopen(char *filename, char *mode) 关闭文件  fclose(fp) 字符形式读  char ch = fgetc(fp) 字符形式写 ...

  3. nodejs文件操作笔记

    nodejs添加了流的概念,通过流操作文件如行云流水,比早前便利畅快多了. 先来第一个例子,我们建一个stream.js文件,里面内容如下: var fs = require("fs&quo ...

  4. Py修行路 python基础 (七)文件操作 笔记(随时更改添加)

    文件操作流程: 1.打开文件 open() 2.操作文件 read .writeread(n) n对应读指定个数的 2.x中读取的是字节! 3.x中读取的是字符!read 往外读取文件,是以光标位置开 ...

  5. Linux文件操作 笔记

    fstat stat lstat 原型 #include <unistd.h> #include <sys/stat.h> #include <sys/types.h&g ...

  6. xps 文件操作笔记

    1. 在 Silverlight 显示XPS文件,参考:http://azharthegreat.codeplex.com/ 2. Word,Excel, PPT 文件转换为XPS: 参考一(老外写的 ...

  7. Tornado 文件操作笔记

    import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver from torna ...

  8. C#中基于流的XML文件操作笔记

    System.Xml.XmlReader和System.Xml.XmlWriters是两个抽象类,XmlReader提供了对于XML数据的快速,非缓存,只进模式的读取器,XmlWriter表示一个编写 ...

  9. Python基础—文件操作(Day8)

    一.文件操作参数 1.文件路径 1)绝对路径:从根目录开始一级一级查找直到找到文件. f=open('e:\文件操作笔记.txt',encoding='utf-8',mode='r') content ...

随机推荐

  1. 对SIL9022/9024的配置

    这里只是记录下对SIL9022.9024配置的I2C的数据,没有具体的程序.程序可以参考数据来做.程序官网也可能有. start of decoding Write to 0x72 0xBC ? 0x ...

  2. Spring MVC基础入门

    Spring MVC简介 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱 ...

  3. 高并发应用场景下的负载均衡与故障转移实践,AgileEAS.NET SOA 负载均衡介绍与实践

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  4. [IDEA] 快捷键学习

    IntelliJ Idea 常用快捷键列表   Alt+回车 导入包,自动修正Ctrl+N   查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L  格式化代码 Ctrl+Alt+O 优化导 ...

  5. Windows 8.1安装 Vmware10

    之前在windows 8上安装的Vmware 9.0,已经激活了用的蛮好,可是自从上次自动更新系统到windows 8.1后,启动虚拟机时提示要激活 使用各种激活码与注册机都无效,就算注册表信息丢失但 ...

  6. IC解密DS2431芯片解密DS2432、DS2433解密多少钱?

    IC解密DS2431芯片解密DS2432.DS2433解密多少钱? DS24系列可成功芯片解密的型号: DS2430A | DS2431 | DS2432 | DS2433 | DS2434 | DS ...

  7. SSH 常用命令解析

    SSH 是什么 SSH(全 称 Secure Shell)是一种加密的网络协议.使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息.要使用 SSH,目标机器应该安装 S ...

  8. Spring泛型依赖注入

    1.定义基础仓库 package com.spring.generic.di; public class BaseRepository<T> { } 2.定义基础服务层   package ...

  9. UVA 12544 - Beehives O(nm) 无向图最小环

    Bees are one of the most industrious insects. Since they collect nectarand pollen from flowers, they ...

  10. react学习小结(生命周期- 实例化时期 - 存在期- 销毁时期)

    react学习小结   本文是我学习react的阶段性小结,如果看官你是react资深玩家,那么还请就此打住移步他处,如果你想给一些建议和指导,那么还请轻拍~ 目前团队内对react的使用非常普遍,之 ...