文件的操作

文件的操作

一、读取文件

在文件这里推荐三个控件:OpenFileDialog:选择打开文件、saveFileDialog:选择保存文件、FolderBrowserDialog:获取目录;

1、读写文件的步骤

在文件操作之前要导入命名空间:System.IO;

读写文件的步骤分为5步:

1、创建文件流

语法:

FileStream fd = new FileStream("文件路径",FileMode);
//其中“FileMode”是枚举类型的,枚举类型的主要作用是约定一个变量的值的范围;其中包括有:
Create:用指定名称新建一个文件,如果文件存在就改写旧文件;
CreateNem:新建一个文件;
Open:打开一个文件;
OpenOrCreate:打开一个文件,如果文件不存在就用指定的名称新建一个文件;
Append:打开现有的文件,并在文件的末尾追加内容;
Truncate:文件存在,先把里面的内容删除掉,再往里面写内容,如果文件不存在就会报错。
2、创建阅读器\写入器

1、创建阅读器:StreamReader

创建:

StreamReader sr = new StreamReader(FileStream fs);

属性:

sr.ReadLine(); 读取文件流中一行数据;

sr.ReadToEnd(); 从当前位置读到末尾,返回字符串;

sr.Close(); 关闭

2、创建写入器:StreamWriter

创建:

StreamWriter sw = new StreamWriter(FileStream fs);

属性:

sw.Write(); 用于写入流,该流是已创建好的流;

sw.WriteLine(); 用于写入一行数据,后跟换行符;

sw.Close(); 关闭

3、执行读写操作

这里只需要写你需要的代码

4、关闭阅读器\写入器

关闭阅读器:sr.Close();

关闭写入器:sw.Close();

5、关闭文件流

关闭文件流:fs.Close();

注:这里的关闭顺序不能错,否则会报错,关闭顺序必须是先关阅读器\写入器,再关文件流。

2、文件流

流:是一个用于数据传输的对象;

文件流:C#里面指的文件流是FileStream,主要用于读写文件中的数据;

3、解决乱码问题

用StreamReader读取文件中的文本文件的时候,可能会出现乱码的问题;要解决这个问题就要指定编码格式;

StreamReader sr = new StreamReader(FileStream fs,Encoding.Default);

这里的Encoding类就是指定编码格式;Encoding位于System.Text命名空间;

Encoding.UTF8: 获得UTF-8格式的编码;

Encoding.Default: 获得当前操作系统的当前编码;

也可以通过Encoding类的静态方法GetEncoding(string name)指定字符编码,参数name必须是C#支持的编码名;

StreamReader sr = new StreamReader(FileStream fs,Encoding.GetEncoding("GB2312"));

这就是Encoding的方法GetEncoding(string name)的使用;

常见的编码名:ASCII、ANSI、GB2312、Unicode(UTF-16、UTF-32、UTF-8),C#内部默认支持UTF-8编码;

二、操作文件和目录

1、文件

文件有两个类:File(是静态类)和 FileInfo(非静态类)

1、File的方法:

static void Delete(string path) 删除文件

static void bool Exists(string path) 检查指定文件是否存在

static void Copy(string soureFilePath,string destFilePath) 复制文件

static void Move(string soureFileName,string destFileName) 移动文件

static FileStream Create(string path) 新建文件

注:path:路径、soureFilePath :原文件路径、destFileName :新文件路径、

这些都是比较常用的方法,想知道更多方法可以去查看源码;查看源码的方法有两种:1、按ctrl+单击;2、在File类上右击选择“转到代码定义处”;

移动和复制的区别:复制原文件还存在;

2、FileInfo:禁止继承

构造函数:FileInfo只有一个构造函数

public FileInfo(string fileName){}

FileInfo的属性和方法

属性:

Exists :用于检查文件是否存在;

DirectoryInfo Directory:

string DirectoryName:文件所在目录;

long Length:文件大小;

override string Name :文件名称;

方法:

Delete() :这个删除方法是没有参数的;

CopyTo(string path) :复制,这里的path是指新路径;

MoveTo(string destFileName) :移动,这里的destFileName是指新路径;

FileSystemInfo类是FileInfo的父类;

string FullPath :全路径;

string Extension :后缀;

这里也是和File一样的,还有其他方法可以查看源码进行学习;

2、目录

目录也有两个类分别是Directory和DirectoryInfo

1、Directory-----静态类

Directory的方法:

bool Exists(string path) :检查指定的文件是否存在;

void Move(string sourceDirName,string destDirName) :移动文件

void Delete(string path,bool recursive) :删除,当recursive为true时,连同子目录中的所有内容都删除;

DateTime GetCreationTime(string path) :得到该文件创建的时间;

String[] GetDirectories(string path) :得到所有的子目录;

String[] GetFiles(string path):得到所有子文件;

以上是比较常用的方法,需要学习更多的方法请查看源码;

2、DirectoryInfo -----非静态类

创建:public DirectoryInfo(string path);

属性:

override bool Exists :检查指定文件是否存在;

string Name:文件名;

DirectoryInfo Parent :拿到父目录

方法:

void Delete() 删除,前提是目录里没有其他文件,否则会报错;

void Delete(bool recursive) :当recursion为true时连同子目录中的所有内容都删除;

DirectoryInfo[] GetDirectories() :得到所有子目录;

DirectoryInfo[] GetFiles() :得到所有子文件;

需要其他方法的可以查看源码;

3、静态类和非静态类的区别

静态类非静态类
只包含静态成员可以包含静态成员
不可以包含实例成员可以包含实例化成员
使用类名调用静态成员使用实例对象调用非静态成员
不能被实例化可以被实例化
不能包含实例构造函数可以包含实例构造函数
用static修饰不用static修饰

定义类中的静态成员的语法:

class 类名 
{
    public static 数据类型 变量名;
    public static 返回值 方法名(参数列表)
    {
        //方法体
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值