zoukankan      html  css  js  c++  java
  • C#文件IO操作

    一、文件系統概述
        计算机系统的重要作用之一是能快速处理大量信息,因此数据的组织和存取成为一个极为重要的内容。文件是信息的一种组织形式,而文件系统的的目标就是提高存储器的利用率,接受用户的委托实施对文件的操作。
          文件系统是操作系统的一个重要组成部分。文件系统所要解决的问题包括:管理存储设置,决定文件的存放位置和方式,提供共享能力,保证文件安全性,提供友好的用户接口。通过文件系统,用户和应用程序能方便地进行数据存储,而不必关心底层存储设备的实现。
         Windows支持多种文件系统,如FAT,FAT32,NTFS等。这些文件系统在操作系统内部有不同的实现方式,然而它们提供给用户的接口是一致的。如果应用程序不涉及到操作系统的具体特性,那么只要按照标准式来编写代码,生成的应用程序就可以运行在各个文件系统上,甚至还可以不经改动移植到其他操作系统(比如Unix和Linux)上.NET框架中的IO处理部分就封装了文件系统的实现细节,提供给开发人员一个标准化的接口。
         Windows操作系统对文件系统采用多级目录结构,并且提供了一组命令用于文件和目录管理。可以使用.NET提供的标准方法进行目录管理、文件控制和文件存取等工作,程序代友编译执行时,.NET框架会自动调用相关的系统命令。
         C#将文件视为一个字节序列,以流的方式对文件进行操作。流是字节序列的制作概念,文件、输入/输出设计、内部时行程序管道以及TCP/IP套接字等都可以视为一个流。.NET对流的概念进行了抽象,为这些不同类型的输入和输出提供了统一的视图,使程序员不必去了解操作系统和基础设备的具体细节。
    二、目录和文件
    1. 相关枚举类型
    a) FileAccess,该枚举类型表示文件的访问权限,可以为以下值。
    i. Read---对文件拥有读权限
    ii. ReadWrite---对文件拥有的读写权限
    iii. Write---对文件拥有写权限
    b) FileAttributes,该枚举类型表示文件的类型
    i. Archive---存档文件
    ii. Compressed---压缩文件
    iii. Device---设备文件
    iv. Directory---目录
    v. Encrypted---加密文件
    vi. Hidden---隐藏文件
    vii. Normal---普通文件
    viii. NOtContentIndexd---无索引文件
    ix. Offline---脱机文件
    x. ReadOnly---只读文件
    xi. ReparsePoint---重分析文件
    xii. SparseFile---稀疏文件
    xiii. System---系统文件
    xiv. Temporary---临时文件
    枚举值可以按位进行组合使用,比如FileAttributes.System|FileAttributes.ReadOnly表示系统只读文件。当然,一些相互排斥的类型是不能进行组合的,比如一个文件不能既是普通文件,又是隐藏文件。
    c) FileMode,该枚举类型表示文件的打开方式,可以为以下值:
    i. Append---以追加的方式打开文件,如果文件存在则移动到文件末尾,否则创建一个新文件。
    ii. Create---创建并打开一个文件,如果文件已经存在则覆盖旧文件。
    iii. Open---打开现有文件,如果文件不存在发生异常。
    iv. OpenOrCreate---打开或新建一个文件,如果文件存在则打开它,否则创建并打开一个新文件。
    v. Truncate---打开现有文件,并清空文件内容。
    d) FileShare,该枚举类型表示文件共享方式,可以为以下值。
    i. None---禁止任何形式的共享。
    ii. Read---读共享,打开文件后允许其它进程对文件进行读写操作。
    iii. ReadWrite---读写共享,打开文件后允许其它进程对文件进行读和写操作。
    iv. Write---写共享,打开文件后允许其它进程对文件进行写操作。
    e) SeekOrigin,该枚举类型表示文件的偏移以什么为准,可以为以下值:
    i. Begin---从文件起始位置计。
    ii. Current---从文件流的当前位置计。
    iii. End---从文件流的末尾位置计。
    f) NotifyFilters,该枚举类型用于指定对文件或目录哪些属性的修改进行监视,可以为以下值:
    i. Attributes---对属性的变化进行监视。
    ii. CreationTime---对创建时间的变化进行监视。
    iii. DirectoryName---对目录名称的变化进行监视。
    iv. FileName---对文件名称的变化进行监视。
    v. LastAccess---对最后一次访问时间的变化进行监视。
    vi. LastWrite---对最后一次时间的变化进行监视。
    vii. Security---对安全设置的变化进行监视。
    viii. Size---对大小的变化进行监视。
    2. 目录
    使用Directory类提供的目录管理功能,不仅可以创建、移动和删除目录,还可以获取和设置目录的相关信息。
    Directory提供的静态方法有:
    Ø Public static DirectoryInfo CreateDirectory(string)---给定路径名,创建目录,并返回目录信息。
    Ø Public static void Delete(string)---给定路径名,删除目录。
    Ø Public static void bool Exists(string)----给定路径名,判断目录是否存在。
    Ø Public static DateTime GetCreationTime(string)----给定路径名,获取目录创建的日期和时间。
    Ø Public static string GetCurrentDirectory()---获取应用程序的当前工作目录。
    Ø Public static string[] GetDirectory(string)---给定路径名,获取目录中的子目录列表。
    Ø Public static string GetDirectoryRoot(string)---给定路径名,获取目录的卷信息或要信息。
    Ø Public static string[] GetFile(string)---给定路径名,获取目录中的文件列表。
    Ø Public static string[] GetFileSystemEntries(string)---给定路径名,获取目录中的子目录和文件列表。
    Ø Public static DateTime GetLastAccessTime(string)---给定路径名,获取文件最近一次访问的日期和时间。
    Ø Public static DateTime GetlastWriteTime(string)---给定路径名,获得目录最近一次修改的日期和时间。
    Ø Public static string[] GetLogicalDrivers()---获得计算机上的逻辑驱动器列表。
    Ø Public static DirectoryInfo GetParent(string)---给定路径名,获取目录上层目录的信息。
    Ø Public static void Move(string,string)---给定源路径名和目标路径名,移动目录。
    Ø Public static void SetCreationTime(string,DateTime)---给定路径名,设置目录创建的日期和时间。
    Ø Public static void SetCreationDirectory(string)---给定路径名,将目录设置为应用程序的当前工作目录。
    Ø Public static void SetLastAccessTime(string,DateTime)---给定路径名,设置目录最近一次被访问的日期和时间。
    Ø Public static void SetLastWriteTime(string,DateTime)---给定路径名,设置目录最近一次被修改的日期和时间。

    3. 文件
    a) 文件基本操作
    Ø Public static FileStream Create(string)---给定文件路径名,创建文件,并返回一个FileStream流对象。
    Ø Public static StreamWriter CreateText(string)---给定文件路径名,以文本的方式创建文件,并返回一个StreamWriter流对象。
    Ø Public static void Copy(string,string)---给定源路径名和目录路径名,考贝文件。
    Ø Public static void Move(string,string)---给定源路径名和目录路径名,移支文件。
    Ø Public static void Delete(string)---给定源路径名和目录路径名,删除文件。
    Ø Public static void Exists(string)---给定源路径名和目录路径名,判断文件是否存在。

    b)获取和设置文件信息
    Ø Public static FileAttributes GetAttributes(string)------给定源路径名,获取文件的属性集。
    Ø Public static DateTime GetCreationTime(string)---给定文件路径名,获取文件创建宾日期和时间。
    Ø Public static DateTime GetLastAccessTime(string)---给定文件路径名,获得文件最近一次被访问的日期和时间。
    Ø Public static DateTime GetLastWriteTime(string)---给定文件路径名,获得文件最近一次被修改的日期和时间。
    Ø Public static void SetAttributes(string,FileAttributes)---给定文件路径名,设置文件属性集。
    Ø Public static void SetCreationTime(string,DateTime)---给定文件路径名,设置文件创建的日期和时间。
    Ø Public static void SetLastAccessTime(string,DateTime)----给定文件路径名,设置文件最近一次被访问的日期和时间。
    Ø Public static void SetLastWriteTime(string,DateTime)---给定文件路径名,设置文件最后一次被修改的日期和时间。

    c)打开文件,并将文件与流对象相关联
    Ø Public static FileStream Open(string,FileMode)---给定文件路径名,按指定的方式打开文件,并返回一个FileStream流对象。
    Ø Public static FileStream OpenRead(string)---给定文件路径名,以只读方式打开文件,并返回一个FileStream流对象。
    Ø Public static FileStream OpenWrite(string)---给定文件路径名,打开文件进行读写操作,并返回一个FileStream流对象。
    Ø Public static StreamReader OpenText(string)---给定文件路径名,以文本方式打开文件并返回一个FileStream流对象。
    Ø Public static StreamWriter AppendText(string)---给定文件路径名,以文本方式打开文件进行写操作,并返回一个StreamWriter流对象。

  • 相关阅读:
    Java封装
    SQLite学习手册(目录)
    如何在Mac系统安装eclipse并运行java程序?
    eclipse 常用快捷键
    mac的svn之cornerstone简易教程
    Mac环境下Myeclispe2015工具的安装与破解
    mysql 时间差问题集锦
    Eclipse怎么全局搜索替换(整个项目)
    Java关键字static
    几个linux 下C/C++集成开发环境推荐
  • 原文地址:https://www.cnblogs.com/juexin/p/2595196.html
Copyright © 2011-2022 走看看