
C#成神之路<17> C#使用磁盘数据文件(1)
发布日期:2021-05-07 18:45:04
浏览次数:10
分类:精选文章
本文共 6660 字,大约阅读时间需要 22 分钟。
C# 文件和目录处理:从基础到高级
C#中的文件和目录处理是开发人员在编写应用程序时常用的功能。它允许程序能够读取、写入、删除文件,以及创建、删除目录等操作。这些功能主要由 System.IO 命名空间 提供,包含了丰富的类和方法,帮助开发人员高效地管理文件和目录。
1. DriveInfo 类
DriveInfo 类用于获取计算机驱动器的信息。它包含多个方法和属性,能够返回驱动器的详细信息,如驱动器类型、格式、大小、可用空间等。
方法和属性:
- GetDrives():返回一个包含所有逻辑驱动器的数组。
- AvaliableFreeSpace:以字节为单位返回驱动器上的可用磁盘空间。
- DriveFormat:返回驱动器的格式(如 NTFS 或 FAT32)。
- DriveType:返回驱动器的类型(固定、可移动、RAM 等)。
- Name:返回驱动器的名称。
- TotalFreeSpace:返回驱动器上未用空间的总量。
- TotalSize:返回驱动器的总大小。
示例:
using System;using System.IO;class Program{ static void Main() { DriveInfo myDrive = new DriveInfo("C"); Console.WriteLine("驱动器名:{0}", myDrive.Name); Console.WriteLine("驱动器类型:{0}", myDrive.DriveType); Console.WriteLine("驱动器格式:{0}", myDrive.DriveFormat); Console.WriteLine("总大小:{0} MB", myDrive.TotalSize / 1024); Console.WriteLine("可用空间:{0} MB", myDrive.AvaliableFreeSpace / 1024); }}
2. Directory 类
Directory 类用于管理目录(文件夹)的操作。它提供了创建、删除、检查目录存在性、获取目录信息等功能。
方法和属性:
- CreateDirectory():创建指定路径的目录。
- Delete():删除指定目录。
- Exists():检查指定目录是否存在。
- GetCreationTime():返回目录创建的时间(DateTime 类型)。
- GetCurrentDirectory():获取应用程序当前工作目录。
- GetFiles():返回指定目录中的文件名。
- GetLastAccessTime():返回上次访问目录的日期和时间。
- GetLastWriteTime():返回上次写入目录的日期和时间。
- GetParent():返回指定目录的父目录。
- Move():将文件或目录移动到新位置。
- SetCreationTime():设置目录创建的时间。
- SetLastWriteTime():设置上次写入目录的日期和时间。
示例:
using System;using System.IO;class Program{ static void Main() { string startingPath = @"C:\Users\Username\Documents"; Directory.CreateDirectory(startingPath); // 创建目录 if (!Directory.Exists(startingPath)) { Console.WriteLine("目录不存在"); return; } FileInfo[] files = Directory.GetFiles(startingPath); // 获取目录中的文件 foreach (FileInfo file in files) { Console.WriteLine("文件名:{0}", file.Name); Console.WriteLine("文件路径:{0}", file.FullName); Console.WriteLine("文件扩展名:{0}", file.Extension); Console.WriteLine("文件长度:{0} KB", file.Length / 1024); Console.WriteLine("文件创建时间:{0}", file.CreationTime); Console.WriteLine("文件最后访问时间:{0}", file.LastAccessTime); Console.WriteLine("文件最后写入时间:{0}", file.LastWriteTime); Console.WriteLine(new string('-', 50)); } }}
3. DirectoryInfo 类
DirectoryInfo 类是一个更高级的类,用于获取和管理目录的详细信息。它提供了与 Directory 类类似的方法,但功能更为强大。
方法和属性:
- Create():创建指定路径的目录。
- CreateSubdirectory():创建子目录。
- Delete():删除指定目录。
- Equals():比较两个 DirectoryInfo 对象。
- GetDirectories():返回当前目录的子目录。
- GetFiles():返回当前目录中的文件(重载方法)。
- GetFileSystemInfos():返回文件和子目录的强类型 FileSystemInfo。
- MoveTo():将 DirectoryInfo 对象的内容移动到指定路径。
- Exists:返回一个值,指示某个目录是否存在。
- Extension:返回文件名的扩展名。
- FullName:返回目录或路径的完整路径。
示例:
using System;using System.IO;class Program{ static void Main() { string startingPath = @"C:\Users\Username\Documents"; DirectoryInfo myDirInfo = new DirectoryInfo(startingPath); if (!myDirInfo.Exists) { Console.WriteLine("目录不存在"); return; } DirectoryInfo subDirInfo = myDirInfo.CreateSubdirectory("SubFolder"); Console.WriteLine("子目录路径:{0}", subDirInfo.FullName); FileInfo file = new FileInfo(@"C:\Users\Username\Documents\file.txt"); file.MoveTo(subDirInfo.FullName + "moved_file.txt"); Console.WriteLine("文件已移动到:{0}", file.FullName); myDirInfo.Delete(); Console.WriteLine("目录已删除"); }}
4. 文件操作
文件操作主要由 File 类和 FileInfo 类提供。File 类用于高级文件操作,而 FileInfo 类提供了文件的详细信息。
File 类方法:
- AppendAllText():将文本附加到文件后面(重载方法)。
- AppendText():用 UTF-8 编码格式附加文本。
- Copy():复制指定文件。
- Create():创建新文件。
- CreateText():创建或打开 UTF-8 编码的文本文件。
- Delete():删除指定文件。
- Exists():检查文件是否存在。
- GetCreationTime():返回文件创建时间。
- GetLastWriteTime():返回文件最后写入时间。
- Move():移动文件到新位置。
- Open():打开文件(支持多种访问模式)。
- OpenRead():打开用于读取的文件。
- OpenText():打开用于读取的 UTF-8 文件。
- OpenWrite():打开用于写入的文件。
- ReadAllBytes():读取文件内容到字节数组。
- ReadAllLines():读取文件内容到字符串数组。
- ReadAllText():读取文件内容到字符串。
- Replace():用另一个文件的内容替换当前文件的内容。
- SetAttributes():设置文件的属性。
示例:
using System;using System.IO;class Program{ static void Main() { string path = @"C:\Users\Username\Documents\file.txt"; FileStream fs = File.Create(path); StreamWriter sw = new StreamWriter(fs); sw.WriteLine("这是一个测试文件"); sw.Close(); fs.Close(); string content = File.ReadAllText(path); Console.WriteLine(content); File.Delete(path); Console.WriteLine("文件已删除"); }}
5. 文件类型
文件可以分为文本文件和二进制文件:
文本文件
- 包含文本数据的文件,通常以字符编码存储。
- 优点:易于读取和编辑。
- 缺点:不能存储二进制数据。
二进制文件
- 包含二进制数据的文件,通常用于存储图片、音乐、视频等。
- 优点:存储效率高,不需要转换格式。
- 缺点:读取和写入速度较慢。
判断文件类型
文件名通常可以反映文件类型。例如:
- *.txt:文本文件
- .docx、.xlsx:文档文件
- .jpg、.png:图像文件
- .exe、.dll:可执行文件
6. 代码示例
1. 列出目录信息
using System;using System.IO;class Program{ static void Main() { string startingPath = @"C:\Users\Username\Documents"; DirectoryInfo myDirInfo = new DirectoryInfo(startingPath); if (!myDirInfo.Exists) { Console.WriteLine("目录不存在"); return; } ArrayList dirs = new ArrayList(); clsDirectory myDirs = new clsDirectory(); int count = myDirs.ShowDirectory(myDirInfo, 0, dirs); foreach (DirectoryInfo dir in dirs) { Console.WriteLine("目录名:{0}", dir.Name); Console.WriteLine("目录路径:{0}", dir.FullName); Console.WriteLine("目录大小:{0} KB", dir.TotalSize / 1024); Console.WriteLine("目录创建时间:{0}", dir.CreationTime); Console.WriteLine("目录最后访问时间:{0}", dir.LastAccessTime); Console.WriteLine("目录最后写入时间:{0}", dir.LastWriteTime); Console.WriteLine(new string('-', 50)); } }}
2. 写入文本文件
using System;using System.IO;class Program{ static void Main() { string fileName = @"C:\Users\Username\Documents\ErrorLog.txt"; StreamWriter sw = new StreamWriter(fileName, true); try { DateTime currentDT = DateTime.Now; sw.WriteLine("{0},{1}:{2}", currentDT.ToShortDateString(), currentDT.ToShortTimeString(), "测试消息"); sw.WriteLine("-------------------"); sw.Close(); } catch (Exception ex) { Console.WriteLine("错误:{0}", ex.Message); } }}
3. 复制文件
using System;using System.IO;class Program{ static void Main() { string sourcePath = @"C:\Users\Username\Documents\file.txt"; string destinationPath = @"C:\Users\Username\Documents\new_file.txt"; if (File.Exists(sourcePath)) { File.Copy(sourcePath, destinationPath); Console.WriteLine("文件已复制"); } else { Console.WriteLine("源文件不存在"); } }}
小结
通过上述内容,可以看出 C# 提供了丰富的文件和目录处理功能,适用于各种应用场景。无论是简单的文件读写,还是复杂的文件管理操作,都可以通过这些类和方法轻松实现。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月27日 16时31分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
不知道考研各科课程那个老师的课好?怎么选择安排?在哪找课程课本资料?看这里
2019-03-04
考研高数一_高数二_高数三考试大纲
2019-03-04
【考研高数-高等数学-基础】第四章 不定积分
2019-03-04
【考研英语-基础-简单句】简单句的核心变化_谓语情态
2019-03-04
17级软件技术二班刘鑫磊安卓学期总结
2019-03-04
配置Log4j详细版
2019-03-04
数据结构 第五章 二叉树-1
2019-03-04
[Easy] 58. Length of Last Word
2019-03-04
[Easy] 100. Same Tree
2019-03-04
PVE+集客AC+K2T-AP
2019-03-04
Jetson AGX Xavier硬件自启动
2019-03-04
网页实时显示已经运行了多少天 html+js
2019-03-04
判断移动端(手机)还是客户端(电脑)打开网页并跳转不同页面(首页)
2019-03-04
眼睛跟随鼠标转动的小黄人 html+css+js
2019-03-04
8086汇编语言21键电子琴
2019-03-04
找密码
2019-03-04
婚姻稳定匹配问题
2019-03-04
C++数据类型,运算符,注释
2019-03-04
平均年龄,,数字求和
2019-03-04
简单的字符串操作(注意要点)
2019-03-04