• C# 文件操作笔记


    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:	mp";
                /*监视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);
            }
        }
        
    }
    

      

  • 相关阅读:
    react的路由权限控制
    react的路由中的switch和exact的使用
    react中antd的表格自定义展开
    webstorm的git操作使用
    ES6的相关语法
    vue导出文件下载
    vue如何解析xml文件 x2js
    ES6模板字符串
    彻底卸载微软拼音输入法
    systemverilog新增的always_comb,always_ff,和always_latch语句
  • 原文地址:https://www.cnblogs.com/kelvinchiang/p/6259056.html
Copyright © 2020-2023  润新知