首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]掌握C#文件操作:从入门到实战,轻松实现高效文件管理技巧

发布于 2025-06-22 10:40:01
0
1187

目录C文件操作基础文件读取和写入目录操作文件权限管理文件加密和解密文件压缩和解压实战案例:文件备份系统C文件操作基础在C中,文件操作是通过System.IO命名空间中的类来完成的。这个命名空间提供了丰...

目录

  1. C#文件操作基础
  2. 文件读取和写入
  3. 目录操作
  4. 文件权限管理
  5. 文件加密和解密
  6. 文件压缩和解压
  7. 实战案例:文件备份系统

C#文件操作基础

在C#中,文件操作是通过System.IO命名空间中的类来完成的。这个命名空间提供了丰富的类和方法,用于处理文件、目录和路径。

文件路径

文件路径是文件在文件系统中的唯一标识符。在C#中,可以使用System.IO.Path类来处理文件路径。

using System.IO;
string filePath = @"C:\Users\Username\Documents\example.txt";
string fileName = Path.GetFileName(filePath); // 获取文件名
string directoryPath = Path.GetDirectoryName(filePath); // 获取目录路径
string extension = Path.GetExtension(filePath); // 获取扩展名

文件信息

使用System.IO.FileInfo类可以获取和设置文件的基本信息,如大小、创建时间等。

using System.IO;
FileInfo fileInfo = new FileInfo(filePath);
Console.WriteLine($"文件大小: {fileInfo.Length} 字节");
Console.WriteLine($"创建时间: {fileInfo.CreationTime}");

文件读取和写入

读取文件

读取文件可以使用StreamReader类,它提供了一个简单的文本读取功能。

using System.IO;
string text = File.ReadAllText(filePath);
Console.WriteLine(text);

写入文件

写入文件可以使用StreamWriter类。

using System.IO;
string text = "Hello, World!";
File.WriteAllText(filePath, text);

目录操作

创建目录

使用Directory.CreateDirectory方法可以创建目录。

using System.IO;
Directory.CreateDirectory(directoryPath);

列出目录内容

使用Directory.GetFilesDirectory.GetDirectories方法可以列出目录中的文件和子目录。

using System.IO;
string[] files = Directory.GetFiles(directoryPath);
foreach (string file in files)
{ Console.WriteLine(file);
}

文件权限管理

C#中没有内置的文件权限管理类,但可以使用Windows API来实现。

using System;
using System.Runtime.InteropServices;
class Program
{ [DllImport("kernel32.dll", SetLastError = true)] static extern bool SetFileAttributes(string lpFileName, int fileAttributes); static int Main() { const int FILE_ATTRIBUTE_READONLY = 0x01; string filePath = @"C:\Users\Username\Documents\example.txt"; bool result = SetFileAttributes(filePath, FILE_ATTRIBUTE_READONLY); if (result) { Console.WriteLine("文件权限设置成功。"); } else { Console.WriteLine("文件权限设置失败。"); } return 0; }
}

文件加密和解密

C#可以使用System.Security.Cryptography命名空间中的类来加密和解密文件。

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{ static void Main() { string originalPath = @"C:\Users\Username\Documents\example.txt"; string encryptedPath = @"C:\Users\Username\Documents\encrypted.txt"; string decryptedPath = @"C:\Users\Username\Documents\decrypted.txt"; byte[] originalBytes = File.ReadAllBytes(originalPath); byte[] encryptedBytes = EncryptFile(originalBytes); File.WriteAllBytes(encryptedPath, encryptedBytes); byte[] decryptedBytes = DecryptFile(encryptedBytes); File.WriteAllBytes(decryptedPath, decryptedBytes); Console.WriteLine("文件加密和解密成功。"); } static byte[] EncryptFile(byte[] dataToEncrypt) { byte[] key = Encoding.UTF8.GetBytes("yourpassword"); byte[] iv = Encoding.UTF8.GetBytes("youriv"); using (Aes aesAlg = Aes.Create()) { aesAlg.Key = key; aesAlg.IV = iv; aesAlg.Mode = CipherMode.CBC; ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { csEncrypt.Write(dataToEncrypt, 0, dataToEncrypt.Length); } return msEncrypt.ToArray(); } } } static byte[] DecryptFile(byte[] dataToDecrypt) { byte[] key = Encoding.UTF8.GetBytes("yourpassword"); byte[] iv = Encoding.UTF8.GetBytes("youriv"); using (Aes aesAlg = Aes.Create()) { aesAlg.Key = key; aesAlg.IV = iv; aesAlg.Mode = CipherMode.CBC; ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msDecrypt = new MemoryStream(dataToDecrypt)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { return Encoding.UTF8.GetBytes(srDecrypt.ReadToEnd()); } } } } }
}

文件压缩和解压

C#可以使用System.IO.Compression命名空间中的类来压缩和解压文件。

using System;
using System.IO;
using System.IO.Compression;
class Program
{ static void Main() { string sourceFilePath = @"C:\Users\Username\Documents\example.txt"; string zipPath = @"C:\Users\Username\Documents\example.zip"; string destFilePath = @"C:\Users\Username\Documents\unzipped_example.txt"; // 压缩文件 ZipFile.CreateFromFile(sourceFilePath, zipPath); // 解压文件 ZipFile.ExtractToDirectory(zipPath, @"C:\Users\Username\Documents\"); File.WriteAllText(destFilePath, File.ReadAllText(sourceFilePath)); }
}

实战案例:文件备份系统

以下是一个简单的文件备份系统的示例,它可以将指定目录中的所有文件备份到另一个目录。

using System;
using System.IO;
class Program
{ static void Main() { string sourceDirectoryPath = @"C:\Users\Username\Documents\source"; string backupDirectoryPath = @"C:\Users\Username\Documents\backup"; if (!Directory.Exists(backupDirectoryPath)) { Directory.CreateDirectory(backupDirectoryPath); } string[] files = Directory.GetFiles(sourceDirectoryPath); foreach (string file in files) { string destinationPath = Path.Combine(backupDirectoryPath, Path.GetFileName(file)); File.Copy(file, destinationPath, true); } Console.WriteLine("文件备份完成。"); }
}

通过以上内容,你可以了解到C#文件操作的基础知识、读取和写入文件、目录操作、文件权限管理、文件加密和解密、文件压缩和解压,以及一个简单的文件备份系统的实现。这些技巧将帮助你高效地进行文件管理。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流