zoukankan      html  css  js  c++  java
  • 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);
            }
        }
        
    }
    

      

  • 相关阅读:
    SD卡测试
    测试人员可能会遇到的问题
    HDU 1024 Max Sum Plus Plus
    HDU 1176 免费馅饼
    HDU 1257 最少拦截系统
    HDU 1087 Super Jumping! Jumping! Jumping!
    poj 1328 Radar Installation
    poj 1753 Flip Game
    HDU 1003 Max Sum
    HDU 5592 ZYB's Premutation(BestCoder Round #65 C)
  • 原文地址:https://www.cnblogs.com/kelvinchiang/p/6259056.html
Copyright © 2011-2022 走看看