文件操作

单词

file 文件
directory 目录
stream 流
encoding 编码
exist 存在

文件概述

我们知道,程序中的数据通常保存在内存中,当程序关闭后,这些内存中的数据就会被释放。如果想保存程序的数据或者程序计算的结果(这个过程有时被称为数据持久化),我们可以采取以下两种方式:数据库和文件。通常数据库适用于大批量的包含复杂的查询,和数据的维护,而简单的数据,用数据苦存储,成本较高,而文件适合于相对简单的数据保存。

读写文件的步骤
  1. 创建文件流
  2. 创建阅读器或者写入器
  3. 执行读写操作
  4. 关闭阅读器或者写入器
  5. 关闭文件流
(1)文件流
  • 读写文件的第一步创建文件流,流是用于数据传输的对象,写入结束后一定关闭文件流。
  • 引入 System.IO命名空间用于对文件和文件流的处理,提供文件操作的类。文件流(FileStream类)用于读写文件中的数据,在创建文件流时,需要在他的构造函数中指定参数。
语法

FileStream myfs = new FileStream( string path, FileMode mode );

string path:指定文件路径
FileMode mode :指定如何打开文件,枚举类型,常用成员如下

  • Create:创建一个新文件。如果文件存在,则改写旧文件
  • CreateNew:新建一个文件。如果文件存在会发生异常,提示文件已经存在
  • Open:指定打开现有文件。指定的文件必须存在,否则会发生异常
  • OpenOrCreate: OpenOrCreate和Open类似,吐过文件不存在,用指定的名称新建一个文件并打开他。
  • Append:打开现有文件夹,并在文件末尾追加内容。、
常见错误
  • 无法识别转义序列
    - 第一种方法:把路径中的"“换为”\"。
    - 第二种方法:在路径前面加上"@"。
string path ="D:\\Text.txt";

string path =@"D:\Text.txt";

文件读写器
  1. StreamWriter写入器

    1. 创建文件流之后,我们要创建 读取器写入器,StreamWriter类称为写入器,用于将数据写入文件流,只要将创建好的文件流传入,就可以创建他的。

    StreamWriter mySw = new StreamWriter(myfs); ----传入文件流

    1. 创建好写入器之后,调用他方法,将要写入的内容写文件流。

    mySw.Write(content);------写入方法
    mySw.WriteLine(content);---------写入一行数据的方法
    mySw.Close();-----关闭写入器

    1. 当写入使用完毕后,关闭写入器的方法是必须调用的。否则会出现 要写入的内容无法写入文件 的情况。
    2. 如果一个程序用了多个流、读写器,它们的关闭顺序一般要和自身在程序中被创建的顺序相反
  2. StreamReade读取器

    1. StreamReade主要用于读取流中的数据

    StreamReader mySr = new StreamReader(myfs);------传入文件流
    content = mySr.ReadToEnd(); -----读取文件到末尾
    content = mySr.ReadLine();-------读取一行

乱码问题
FileStream myfs = new FileStream(path, FileMode.Open);
//读取器
StreamReader mySr = new StreamReader(myfs, Encoding.Default);
content = mySr.ReadToEnd();
txtContent.Text = content;
  • Encoding类指定字符编码。Encodeing类位于System.Text命名空间,用来表示字符编码。
  • 可以通过Encodeing类的静态成员指定编码格式。
    Encoding.UTF8:获取UTF-8格式的编码
    Encoding.Default:获取当前操作系统的字符编码
    Encoding.GetEncoding(“XXX”):参数必须是C#支持的编码。

文件和目录操作
File类和Directory类

前面学习如何读写文件,实际文件操作可以移动,删除等。

.NET中框架类库向用户提供了一个File类,位于System.IO命名空间,提供了很多方法用于文件操作,常用方法如下:
在这里插入图片描述
注意:File类的Exists()方法,在进行文件操作时常常用到。很明显,如果不实现判断文件是否存在,在操作的时候很有可能失败

提到文件(File)的操作,就不能不提如何操作目录(文件夹),操作目录的是Directory类。
在这里插入图片描述


静态类和静方法
  • File类和Directory类在使用他们的方法时,不需要实例化,而是直接使用类名. 方法名();的方式调用。这其实是静态方法的调用方式。
  • 静态方法的调用方式,需要用类名访问,同时使用static关键字来修饰。
  • 静态类中只能包含静态方法,不能使用new关键字创建静态类的实例。|
静态和非静态的区别

在这里插入图片描述

语法:
class 类名
 {       
    public static 数据类型  变量名;           
    public static 返回值类型  方法名(参数列表)
    {
    	//方法体
	}
 {

语法中展示两种形式,静态成员变量和静态成员方法,即类中的变量和方法都可以声明为静态的。静态成员是一种特殊的成员,他不属于类的某一个具体实例。

类的静态成员在第一次访问前被初始化,系统在内存中分配一块区域存储他,之后一直存在,一直到程序退出才会释放。

静态成员的使用
  • 调用静态成员
    类名.变量名 = XX; //给变量赋值
    类名.方法名(); //调用静态方

  • 应用场合:
    当类不会有多个对象而更像是一个公用类的时候,
    或当方法或属性是“公用”信息的时候声明为静态的比较好!

提供实例方法的文件和目录操作
  • 前面讲的File类和Directory类都用静态方法和目录
FileInfo类属性和方法

在这里插入图片描述

应用场景:
由于File类的静态方法在使用时都会进行安全检查,所以如果想要多次使用某个文件对象,可以考虑使用FileInfo类相应的实例方法,因为并不总是需要安全检查

DirectoryInfo属性和方法

示例:
在这里插入图片描述

示例中使用了DirectoryInfo类的重要方法
  • GetDirectories():该放法返回当前目录的子目录对象数组。Directory类也有这个方法。但返回值是当前目录子目录的名称数组
  • GetFiles():该方法返回当前目录下文件列表(FileInfo对象数组)。Directory类也有这个方法,但返回值是返回指定目录下的文件名数组

应用场景:如果需要对当前目录下的子目录和文件进行一步操作,显然用DirectoryInfo类比较方便。如果只想知道当前目录下的子目录和文件的名称可以选用Directory类。

问答

既然File类,FileInfo类都能操作文件,同样用Directory类和DirectoryInfo类都能操作目录,使用如何取舍?
答:由于File类的静态方法在使用时都会进行安全检查,如果想要多次使用某个文件对象,可以考虑使用FileInfo类相应的实方法,应为并不总是需要安全检查。

读目录下的文件信息

MyFile类来存储文件信息,以下属性
在这里插入图片描述

总结:

在这里插入图片描述




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值