C#中的文件操作

为什么要对文件进行操作?

在计算机当中,数据是二进制的形式存在的,文件则是用于存储这些数据的单位,因此在需要操作计算机中的数据时,需要对文件进行操作。

在程序开发过程中,操作变量和常量的时候,数据都是存储在内存中的,程序运行结束后会被全部删除。

所以当想要持续性保存相关数据时,就要通过文件或数据库的方式来对这些数据进行存储。

比如说,在游戏开发的过程中的背包存储物品、存档等操作都涉及很多相关的文件操作的部分,至于负责存储文件格式各有不同,比如Json、XML、BIN等都可以存储文件。

流与文件流

输入/输出流

大多数的应用程序都需要实现与设备之间的数据传输。
在C#当中将这种通过不同输入/输出设备之间的数据传输抽象表述为“流”,程序允许通过流的方式与输入/输出设备进行数据传输。
C#中的“流”都位于System.IO命名空间当中,称为IO(输入/输出)流、

文件流

计算机中,所有的文件都是以二进制方式存储的,因此C#专门针对文件的输入输出操作提供了一系列的流,统称为文件流。
文件流是程序中最常用的流,根据数据的传输方向可将其分为输入流和输出流。

常用的文件操作类

C#提供一系列文件操作类,来实现在程序运行时对文件进行创建、读写、移动等操作
大致可分为操作目录的类、操作文件的类、操作文件路径的类等。

操作文件的类

File
FileInfo
FileStream

操作目录的类

Directory
DirectoryInfo

操作文本文件的类

StreamReader
StreamWriter

操作文件路径的类。

Path

File类

File类是一个静态类,提供了很多静态方法,可以对文件进行创建、移动、查询和删除等操作。

  1. FileStream Create(string path)
    作用:根据传入的路径创建一个文件,如果文件不存在,则创建文件,如果存在且不是只读的,则覆盖其内容,否则报异常。
  2. void Delete(string path)
    作用:如果文件存在,则删除指定的文件,如果指定的文件不存在也不引发异常。
  3. bool Exists(string path)
    作用:判断指定文件是否存在,若存在则返回ture,否则返回false。
  4. void Move(string sourceFileName,string destFileName)
    作用:将指定的文件移动到新位置,可以在新位置为文件指定不同的名称。
  5. FileStream Open(string path,FileMode mode)
    作用:打开指定路径上的文件并返回FileStream对象。
  6. void Copy(string sourceFileName,string destFileName)
    作用:将现有的文件复制到新文件,可以指定是否允许覆盖同名的文件。
FileStream TextFile = File.Create("Data.txt");
TextFile.Close();//关闭文件流,后续对Data.txt文件操作就不会出现;文件Data.txt正由另一进程使用,因此该进程无法访问此文件

File.Create("Data.txt");
Console.WriteLine("文件创建成功");
if (File.Exists("Data.txt"))
{
   
   
     Console.WriteLine("创建成功");
}
else
{
   
   
     Console.WriteLine("创建失败");
}

File.Copy("Data.txt", @"E:\Data1.txt", true);//复制的同时可以改名称
File.Delete("Data.txt");
File.Move(@"E:\Data1.txt", @"D:\Data2.txt");//移动的同时可以改名称

文件路径的相关知识

  • / 表示当前文件(指运行程序的exe文件)的根目录
  • ./ 表示当前目录(指运行程序的exe文件所在位置),与Data.txt前没有任何符号等价
  • …/ 表示当前目录(指运行程序的exe文件所在位置)的上一级目录
  • 绝对路径是指文件在磁盘上的完整路径,在程序中使用绝对路径时需要注意该路径的位置,当该位置发生改变时可能会导致异常

FileInfo类

FileInfo类是实例类,所有的方法都只能在实例化对象后才能调用,创建FileInfo类对象时必须传递一个文件路径作为参数。
具体语法格式

FileInfo aFile = new FileInfo(@"E:\Data3.txt");

FileInfo类除了有许多与File类相似的方法(如:Create、Delete、Exists、MoveTo、CopyTo、Open)外,还有其特有的属性

  1. Directory
    表示当前文件所在的目录。
  2. DirectoryName
    该属性用于返回文件目录,而且这个属性是只读的,获取结果与Directory属性一样
  3. IsReadOnly
    该属性用于判断文件是否是只读的。
  4. Length
    该属性用于获取文件的大小(以字节为单位),并返回long值。
  5. FullName
    获取带路径的文件名
  6. CreationTime
    获取文件的创建时间
FileInfo aFile = new FileInfo(@"E:\Data3.txt");
aFile.Create();//创建文件
Console.WriteLine("文件创建成功");
Console.WriteLine(aFile.FullName);
 if (aFile.Exists)//判断文件是否存在,在此Exists为属性,而File类中为方法
 {
   
   
         Console.WriteLine("Data.txt文件存在");
 }
 else
 {
   
   
         Console.WriteLine("Data.txt文件不存在");
 }
 Console.WriteLine("文件当前目录为:"+aFile.Directory);
 Console.WriteLine("文件大小为:"+aFile.Length);

Directory类

Directory类是静态类,提供了许多静态方法用于对目录进行操作,例如创建、删除、查询和移动目录等

  1. DirectoryInfo CreateDirectory(string path)
    作用:创建指定路径的所有目录和子目录
  2. void Delete(string path)
    作用:删除指定路径的空目录
  3. bool Exists(string path)
    作用:判断指定路径目录是否存在,若存在则返回ture,否则返回false。
  4. DirectoryInfo GetParent(string path)
    作用:查找指定路径的父目录,包括相对路径和绝对路径
  5. void Move(string sourceDirName,string destDirName)
    作用:将文件或目录及其内容移到新位置。注意:只能同一磁盘下移动
 Directory.CreateDirectory(@"E:\cc\ss\1");
if (Directory.Exists(@"E:\cc\ss\1"))
{
   
   
     Console.WriteLine("目录存在");
}
else
{
   
   
      Console.WriteLine("目录不存在");
}
File.Create(@"E:\cc\ss\1\data.txt");
File.Delete(@"E:\cc\ss\1\data.txt");
Directory.Delete(@"E:\cc\ss\1");//删除没有内容的目录
Directory.Move(@"E:\cc", @"E:\tt"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值