C# FileInfo

在这里,您将学习如何使用 FileInfo 类对物理文件进行读/写操作。

FileInfo 类提供与静态 File 类相同的功能,但您可以通过手动编写代码来从文件读取或写入字节,从而更好地控制文件的读/写操作。

FileInfo 的重要属性和方法:

属性 说明
Directory 获取父目录的实例。
DirectoryName 获取表示目录完整路径的字符串。
Exists 获取一个值,该值指示文件是否存在。
Extension 获取表示文件扩展名部分的字符串。
FullName 获取目录或文件的完整路径。
IsReadOnly 获取或设置一个值,该值确定当前文件是否为只读。
LastAccessTime 获取或设置上次访问当前文件或目录的时间
LastWriteTime 获取或设置当前文件或目录上次写入的时间
Length 获取当前文件的大小(以字节为单位)。
Name 获取文件的名称。
方法 说明
AppendText 创建一个 StreamWriter,它将文本附加到由 FileInfo 的此实例表示的文件。
CopyTo 将现有文件复制到新文件,不允许覆盖现有文件。
Create 创建文件。 返回 FileStream
CreateText 创建一个写入新文本文件的 StreamWriter。
Decrypt 解密当前帐户使用加密方法加密的文件。 (依赖于CSP)
Delete 删除指定的文件。
Encrypt 加密文件,以便只有用于加密文件的帐户才能对其进行解密。 (依赖于CSP)
MoveTo 将指定文件移动到新位置,提供指定新文件名的选项。
Open 在指定的 FileMode 中打开一个。
OpenRead 创建一个只读的 FileStream。
OpenText 使用 UTF8 编码创建一个从现有文本文件读取的 StreamReader。
OpenWrite 创建一个只写的 FileStream。
Replace 用当前 FileInfo 对象描述的文件替换指定文件的内容,删除原始文件,并创建替换文件的备份。
ToString 以字符串形式返回路径。

以下示例显示了如何手动从文件中读取字节,然后使用 UTF8 编码将它们转换为字符串: 我们要先有一个文件abc.txt它的编码是UTF-8。

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;

namespace Malema.net
{
    class Program
    {
        static async Task Main(string[] args)
        {
            FileInfo fi = new FileInfo("abc.txt");
            FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
            // 创建一个跟文件大小一样的缓冲区 (内容大文件小可以这样搞)
            byte[] buffer = new byte[fs.Length];
            // 全部读出来,把文件的肉容放到了 buffer
            fs.Read(buffer, 0, (int)fs.Length);
            // 把所有的字节数组转成字符串
            string filestring = Encoding.UTF8.GetString(buffer);
            Console.WriteLine(filestring);
        }
    }
}

我们也可以用StreamReader来读取它

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;

namespace Malema.net
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var fi = new FileInfo("abc.txt");
            using (var fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
            using (var sr = new StreamReader(fs, Encoding.UTF8)) //这边也演示了编码。
            {
                string fileContent = sr.ReadToEnd();
                Console.WriteLine(fileContent);
            }
        }
    }
}

上一篇:C# 文件 File
下一篇:C# Directory
最近更新的
...