在C# 程序开发中,我们往往会遇到很多文件上传,文件写入等对于文件的操作业务需要开发,文件处理也是任何应用程序的重要组成部分。C# 有几种创建,读取,更新和删除文件的方法。本文主要介绍C# File文件操作及常用的方法。

1、C# File文件处理

System.IO命名空间下,有各种不同的类我们可以处理文件。

I/O 类

描述

BinaryReader

从二进制流读取原始数据。

BinaryWriter

以二进制格式写入原始数据。

BufferedStream

字节流的临时存储。

Directory

有助于操作目录结构。

DirectoryInfo

用于对目录执行操作。

DriveInfo

提供驱动器的信息。

File

有助于处理文件。

FileInfo

用于对文件执行操作。

FileStream

用于文件中任何位置的读写。

MemoryStream

用于随机访问存储在内存中的数据流。

Path

对路径信息执行操作。

StreamReader

用于从字节流中读取字符。

StreamWriter

用于向一个流中写入字符。

StringReader

用于读取字符串缓冲区。

StringWriter

用于写入字符串缓冲区。

例如,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplication
{
   delegate int Calc(int i);  
    class Program
    {
        static void Main(string[] args)
        {
            string path="/home/cjavapy/";
            string s = "";
            if (!File.Exists(path))
                s = "不存在相应的目录";
            else
            {
                StreamReader f2 = new StreamReader(path, System.Text.Encoding.GetEncoding("gb2312"));
                s = f2.ReadToEnd();
                f2.Close();
                f2.Dispose();
            }
            Console.WriteLine(s);
        }
    }
}

2、文件创建相关方法

File.Create(String):在指定路径中创建或覆盖文件。

File.Create(String, Int32):在指定路径中创建或覆盖文件,指定缓冲区大小。

File.Create(String, Int32, FileOptions):创建或覆盖指定路径中的文件,指定缓冲区大小和一个描述如何创建或覆盖该文件的选项。

File.CreateText(String) :创建或打开用于写入 UTF-8 编码文本的文件。 如果该文件已存在,将覆盖其内容。

FileStream(String, FileMode, FileAccess, FileShare) :使用指定的路径、创建模式、读/写权限和共享权限创建 FileStream 类的新实例。

FileStream(String, FileMode, FileAccess, FileShare, Int32, FileOptions) :使用指定的路径、创建模式、读/写和共享权限、其他FileStreams 可以具有的对此文件的访问权限、缓冲区大小和附加文件选项初始化 FileStream 类的新实例。

FileStream(SafeFileHandle, FileAccess, Int32, Boolean):使用指定的读/写权限、缓冲区大小和同步或异步状态为指定的文件句柄初始化 FileStream 类的新实例。

FileStream(String, FileMode, FileAccess):使用指定的路径、创建模式和读/写权限初始化 FileStream 类的新实例。 

Directory.CreateDirectory(String):在指定路径中创建所有目录和子目录,除非它们已经存在。

3、文件删除相关方法

File.Delete(String):删除指定的文件。

Directory.Delete(String):从指定路径删除空目录。

Directory.Delete(String, Boolean):删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。

4、文件操作判断相关方法

File.Exists(String):确定指定的文件是否存在。

Directory.Exists(String) :确定给定路径是否引用磁盘上的现有目录。

5、文件夹操作相关方法

Path.ChangeExtension(String, String):更改路径字符串的扩展名。

Path.Combine(String, String):将两个字符串组合成一个路径。

Path.Combine(String, String, String):将三个字符串组合成一个路径。

Path.Combine(String, String, String, String):将四个字符串组合成一个路径。

Path.Combine(String[]):将字符串数组组合成一个路径。

Path.GetExtension(String):返回指定路径字符串的扩展名(包括句点“.”)。

Path.GetFullPath(String):返回指定路径字符串的绝对路径。

Directory.CreateDirectory(String):在指定路径中创建所有目录和子目录,除非它们已经存在。

Directory.GetDirectories(String):返回指定目录中的子目录的名称(包括其路径)。

Directory.GetDirectories(String, String):返回指定目录中与指定的搜索模式匹配的子目录的名称(包括其路径)。

Directory.GetFiles(String):返回指定目录中文件的名称(包括其路径)。

Directory.GetFiles(String, String) :返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径)。

Directory.GetFiles(String, String, EnumerationOptions):返回指定目录中与指定的搜索模式和枚举选项匹配的文件的名称(包括其路径)。

Directory.GetFiles(String, String, SearchOption):返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径),使用某个值确定是否要搜索子目录。

相关文档:

https://docs.microsoft.com/zh-cn/dotnet/api/system.io.path?view=net-5.0
https://docs.microsoft.com/zh-cn/dotnet/api/system.io.directory?view=net-5.0

6、文件操作示例代码

using System;
using System.IO;
class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        if (!File.Exists(path))
        {
            // 创建一个要写入的文件。
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }
        // 打开要从中读取的文件。
        using (StreamReader sr = File.OpenText(path))
        {
            string s;
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}


推荐文档