C#学习笔记:文件操作
2012-05-13 15:04
211 查看
C#学习笔记:文件操作
如何读写文件:
通常来讲,用C#程序读写一个文件需要以下五个基本步骤
(1)创建文件流。
(2)创建阅读器或者写入器
(3)执行读写操作
(4)关闭阅读器或者写入器
(5)关闭文件流
需要命名空间:using System.IO;
读取器:
//创建文件流
FileStream myfs = new FileStream("路径", FileMode.Open);
//创建读取器,传入的是文件流
StreamReader mysw = new StreamReader(myfs);
//读取全部内容,返回值为String
mysw.ReadToEnd();
//关闭读取器
mysw.Close();
//关闭文件流
myfs.Close();
写入器:
//创建文件流
FileStream myfs = new FileStream("路径", FileMode.Create);
//创建读取器,传入的是文件流
StreamReader mysw = new StreamReader(myfs);
//将录入的内容写入文件,将会保存到myfs里面的路径下的文件里面
mysw.Write("文本值");
//关闭写入器
mysw.Close();
//关闭文件流
myfs.Close();
关闭顺序一定要注意,先是关闭读写器然后才关闭文件流。顺序不能错!
-----------------------------------文件流-----------------------------------
读写文件的第一步是创建一个文件流。流是一个用于数据传输的对象。这里使用的文件流是FileStream类,它主要用于读写文件中的数据,在创建一个文件流时,需要在它的构造函数中指定参数
语法:
FileStream 文件对象 = new FileStream(string FilePath,FileMode);
其中FilePath用于指定要操作的文件,而FileMode指定打开文件的模式,它是一个枚举类型。该枚举的不同成员如下
Create:用于定的名称新建一个文件。如果文件存在,则改写旧文件。
CreateNew:新建一个文件。如果文件存在就会发生异常,提示文件已经存在。
Open:打开一个文件,使用这个枚举值时,指定的文件必须存在,否则会发生异常
。
OpenOrCreate:OpenOrCreate与Open成员类似,只是如果文件不存在,则用指定的名称新建一个文件并打开它。
Append:打开现有文件,并在文件尾追加内容。
FileMode枚举还有其他成员,在这里我们就不再做列举
路径非法问题:
C#程序内部不支持"C:\Text.txt"。
解决方案:
(1)将路径改为"C:\\Text.txt"。这是C#支持的标准写法
(2)@"C:\Text.txt",使用转义符@
---------------------------------文件读写器---------------------------------
StreamWriter写入器
写入器的主要方法如下:
StreamWriter.Write();用于写入流,这个流就是我们创建好的流
StreamWriter.WriteLine();用于写入一行数据,写入某些数据后跟换行符
StreamWriter.Close();用于关闭写入器
StreamReader读取器
读取器的主要方法如下:
StreamReader.ReadToEnd();从当前位置读到末尾,返回字符串
StreamReader.ReadLine();用于读取文件流中的一行数据,返回字符串
StreamReader.Close();用于关闭读取器
--------------------------------- 乱码问题 ---------------------------------
Encoding类指定字符编码。Encoding类位于System.Text命名空间,用来表示字符编码。
可以用Encoding类的静态成员指定编码格式。比如:
Encoding.UTF8:获取UTF-8格式的编码
Encoding.Default:获取操作系统的当前编码
也可以通过Encoding类的静态方法GetEncoding(String name)指定字符编码,参数name必须C#支持的编码名。例如:
StreamReader mysw = new StreamReader(myfs,Encoding.GetEncoding("BIG5"));
以下是各种常见的编码:
(1)ASCII:美国信息交换标准码。适用于纯英文环境,但不适合英语之外的环境
(2)ANSI:向下兼容ASCII,并且保留空余位置处理一些特殊字符。
(3)GB2313:中国国家标准的汉字编码,它收录的汉字基本满足汉字的计算机处理需求。但不支持繁体中文编码,后来又增加了GBK字符集、BIG5字符集。
(4)Unicode:国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。由于Unicode编码所占用的空间较大,所以出现了一些中间格式的字符集,它们被称为通用转换格式,即UTF(Universal Transformation Format)。目前存在的UTF格式有UTF-7、UTF-8、UTF-16、UTF-32。UTF-8是Unicode的一种变长字符编码,现在已被标准化为RFC 3629。UTF-8便于不同的计算机之间使用网络传输不同语言和编码的文字,使得双字节的Unicode能够在现存的处理单字节的系统上正确传输。C#语言内容默认支持UTF-8编码。
------------------------------ 文件和目录操作 ------------------------------
File类:用来移动文件,复制文件,删除文件
File类的常用方法
方法 说明
Exists(string path) 用于检查指定文件是否存在,返回bool值
Copy(string path,string path) 将指定路径的源文件中的内容复制到目标文件中,
如果目标文件不存在,则在指定路径新建一个文件
Move(string path,string path) 将指定文件移到一个新的路径
Delete(string path) 删除指定文件,如果指定文件不存在,不引发异常
Directory类:Directory类是用来对文件夹进行操作的
Directory类的常用方法
方法 说明
Exists(string path) 用于检查指定文件夹在磁盘上是否存在
Move(string path,string path) 用于将文件或目录及内容移到新位置
Delete(string path) 删除指定目录,如果bool值为true,则删除子目录
中的所有目录内容
File类和Directory类都属于静态类,不需要实例化
FileInfo类:FileInfo类和File类的功能相似,但是需要实例化。
FileInfo fi = new FileInfo(path);//实例化的时候需要将文件路径传入进去
FileInfo类的常用方法
属性 说明
Exists 用于检查指定文件是否存在,返回bool值
Extension 获取表示文件扩展名部分的字符串
Name 获取文件名
FullName 获取目录或文件的完成目录
方法 说明
CopyTo(string path) 将现有文件复制到新文件,不允许覆盖现有文件Delete()
永久删除文件
MoveTo(string path) 将指定文件移到一个新的路径
DirectoryInfo类:DirectoryInfo类与Directory类类似,需要实例化
DirectoryInfo di = new DirectoryInfo (path);//实例化的时候
需要将文件夹路径传入进去
//返回当前目录的子目录
DirectoryInfo[] subDir = di.GetDirectories();
//返回当前目录的文件列表
FileInfo[] fi = di.GetFile();
(1)GetDirectories():DirectoryInfo调用返回对象数组,Directory调用返回子目录名称数组
(2)GetFile():DirectoryInfo调用返回对象数组,Directory调用返回子目录名称数组
如何取舍FileInfo类和File类和DirectoryInfo类与Directory类?
答:File类和Directory类都是静态类,每次调用方法在使用时都会进行安全检查,所以如果要多次对某个文件或者文件夹进行操作的话,可以优先考虑FileInfo类和DirectoryInfo类
----------------------------------- 总结 -----------------------------------
(1)读写文件的五个步骤:创建文件流、创建读写器、读写文件、关闭读写器、关闭文件流。
(2)文件流的类是FileStream,创建一个文件流时,需要指定操作文本的路径、文件的打开方式和文件的访问方式。
(3)StreamWriter是一个写入器,StramReader是一个读取器。读写文本文件可以直接使用读写器,不用创建文件流,但是不容易控制文本的打开方式和访问方式
(4)File类用于对文件进行操作,如复制、移动、删除等,Directory类用于对文件夹操作,它们都是静态类。
(5)静态类只包含静态成员,非静态类可以包含静态成员;静态类不能包含实例成员,非静态类可以包含实例成员;静态类使用类名访问其成员,非静态类使用它的实例对象访问成员。
(6)FileInfo类与File类功能类似,也可以完成对文件的基本操作。不同的是File类不可以实例化对象。如果打算多次重用某个文件对象,可以优先考虑使用FileInfo类,因为并不总是需要安全检查
(7)DirectoryInfo类与Directory类功能类似,可以完成对文件夹的基本操作。如果打算多次重用某个目录对象,可以考虑使用DirectoryInfo类的实例方法。
如何读写文件:
通常来讲,用C#程序读写一个文件需要以下五个基本步骤
(1)创建文件流。
(2)创建阅读器或者写入器
(3)执行读写操作
(4)关闭阅读器或者写入器
(5)关闭文件流
需要命名空间:using System.IO;
读取器:
//创建文件流
FileStream myfs = new FileStream("路径", FileMode.Open);
//创建读取器,传入的是文件流
StreamReader mysw = new StreamReader(myfs);
//读取全部内容,返回值为String
mysw.ReadToEnd();
//关闭读取器
mysw.Close();
//关闭文件流
myfs.Close();
写入器:
//创建文件流
FileStream myfs = new FileStream("路径", FileMode.Create);
//创建读取器,传入的是文件流
StreamReader mysw = new StreamReader(myfs);
//将录入的内容写入文件,将会保存到myfs里面的路径下的文件里面
mysw.Write("文本值");
//关闭写入器
mysw.Close();
//关闭文件流
myfs.Close();
关闭顺序一定要注意,先是关闭读写器然后才关闭文件流。顺序不能错!
-----------------------------------文件流-----------------------------------
读写文件的第一步是创建一个文件流。流是一个用于数据传输的对象。这里使用的文件流是FileStream类,它主要用于读写文件中的数据,在创建一个文件流时,需要在它的构造函数中指定参数
语法:
FileStream 文件对象 = new FileStream(string FilePath,FileMode);
其中FilePath用于指定要操作的文件,而FileMode指定打开文件的模式,它是一个枚举类型。该枚举的不同成员如下
Create:用于定的名称新建一个文件。如果文件存在,则改写旧文件。
CreateNew:新建一个文件。如果文件存在就会发生异常,提示文件已经存在。
Open:打开一个文件,使用这个枚举值时,指定的文件必须存在,否则会发生异常
。
OpenOrCreate:OpenOrCreate与Open成员类似,只是如果文件不存在,则用指定的名称新建一个文件并打开它。
Append:打开现有文件,并在文件尾追加内容。
FileMode枚举还有其他成员,在这里我们就不再做列举
路径非法问题:
C#程序内部不支持"C:\Text.txt"。
解决方案:
(1)将路径改为"C:\\Text.txt"。这是C#支持的标准写法
(2)@"C:\Text.txt",使用转义符@
---------------------------------文件读写器---------------------------------
StreamWriter写入器
写入器的主要方法如下:
StreamWriter.Write();用于写入流,这个流就是我们创建好的流
StreamWriter.WriteLine();用于写入一行数据,写入某些数据后跟换行符
StreamWriter.Close();用于关闭写入器
StreamReader读取器
读取器的主要方法如下:
StreamReader.ReadToEnd();从当前位置读到末尾,返回字符串
StreamReader.ReadLine();用于读取文件流中的一行数据,返回字符串
StreamReader.Close();用于关闭读取器
--------------------------------- 乱码问题 ---------------------------------
Encoding类指定字符编码。Encoding类位于System.Text命名空间,用来表示字符编码。
可以用Encoding类的静态成员指定编码格式。比如:
Encoding.UTF8:获取UTF-8格式的编码
Encoding.Default:获取操作系统的当前编码
也可以通过Encoding类的静态方法GetEncoding(String name)指定字符编码,参数name必须C#支持的编码名。例如:
StreamReader mysw = new StreamReader(myfs,Encoding.GetEncoding("BIG5"));
以下是各种常见的编码:
(1)ASCII:美国信息交换标准码。适用于纯英文环境,但不适合英语之外的环境
(2)ANSI:向下兼容ASCII,并且保留空余位置处理一些特殊字符。
(3)GB2313:中国国家标准的汉字编码,它收录的汉字基本满足汉字的计算机处理需求。但不支持繁体中文编码,后来又增加了GBK字符集、BIG5字符集。
(4)Unicode:国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。由于Unicode编码所占用的空间较大,所以出现了一些中间格式的字符集,它们被称为通用转换格式,即UTF(Universal Transformation Format)。目前存在的UTF格式有UTF-7、UTF-8、UTF-16、UTF-32。UTF-8是Unicode的一种变长字符编码,现在已被标准化为RFC 3629。UTF-8便于不同的计算机之间使用网络传输不同语言和编码的文字,使得双字节的Unicode能够在现存的处理单字节的系统上正确传输。C#语言内容默认支持UTF-8编码。
------------------------------ 文件和目录操作 ------------------------------
File类:用来移动文件,复制文件,删除文件
File类的常用方法
方法 说明
Exists(string path) 用于检查指定文件是否存在,返回bool值
Copy(string path,string path) 将指定路径的源文件中的内容复制到目标文件中,
如果目标文件不存在,则在指定路径新建一个文件
Move(string path,string path) 将指定文件移到一个新的路径
Delete(string path) 删除指定文件,如果指定文件不存在,不引发异常
Directory类:Directory类是用来对文件夹进行操作的
Directory类的常用方法
方法 说明
Exists(string path) 用于检查指定文件夹在磁盘上是否存在
Move(string path,string path) 用于将文件或目录及内容移到新位置
Delete(string path) 删除指定目录,如果bool值为true,则删除子目录
中的所有目录内容
File类和Directory类都属于静态类,不需要实例化
FileInfo类:FileInfo类和File类的功能相似,但是需要实例化。
FileInfo fi = new FileInfo(path);//实例化的时候需要将文件路径传入进去
FileInfo类的常用方法
属性 说明
Exists 用于检查指定文件是否存在,返回bool值
Extension 获取表示文件扩展名部分的字符串
Name 获取文件名
FullName 获取目录或文件的完成目录
方法 说明
CopyTo(string path) 将现有文件复制到新文件,不允许覆盖现有文件Delete()
永久删除文件
MoveTo(string path) 将指定文件移到一个新的路径
DirectoryInfo类:DirectoryInfo类与Directory类类似,需要实例化
DirectoryInfo di = new DirectoryInfo (path);//实例化的时候
需要将文件夹路径传入进去
//返回当前目录的子目录
DirectoryInfo[] subDir = di.GetDirectories();
//返回当前目录的文件列表
FileInfo[] fi = di.GetFile();
(1)GetDirectories():DirectoryInfo调用返回对象数组,Directory调用返回子目录名称数组
(2)GetFile():DirectoryInfo调用返回对象数组,Directory调用返回子目录名称数组
如何取舍FileInfo类和File类和DirectoryInfo类与Directory类?
答:File类和Directory类都是静态类,每次调用方法在使用时都会进行安全检查,所以如果要多次对某个文件或者文件夹进行操作的话,可以优先考虑FileInfo类和DirectoryInfo类
----------------------------------- 总结 -----------------------------------
(1)读写文件的五个步骤:创建文件流、创建读写器、读写文件、关闭读写器、关闭文件流。
(2)文件流的类是FileStream,创建一个文件流时,需要指定操作文本的路径、文件的打开方式和文件的访问方式。
(3)StreamWriter是一个写入器,StramReader是一个读取器。读写文本文件可以直接使用读写器,不用创建文件流,但是不容易控制文本的打开方式和访问方式
(4)File类用于对文件进行操作,如复制、移动、删除等,Directory类用于对文件夹操作,它们都是静态类。
(5)静态类只包含静态成员,非静态类可以包含静态成员;静态类不能包含实例成员,非静态类可以包含实例成员;静态类使用类名访问其成员,非静态类使用它的实例对象访问成员。
(6)FileInfo类与File类功能类似,也可以完成对文件的基本操作。不同的是File类不可以实例化对象。如果打算多次重用某个文件对象,可以优先考虑使用FileInfo类,因为并不总是需要安全检查
(7)DirectoryInfo类与Directory类功能类似,可以完成对文件夹的基本操作。如果打算多次重用某个目录对象,可以考虑使用DirectoryInfo类的实例方法。
相关文章推荐
- php对csv文件的读取,写入,输出下载操作
- Spring 文件操作
- python操作配置文件
- java操作文件,字节流与字符流介绍
- iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager
- Java实现文件的读取、写入、复制、修改、移动等操作
- php文件操作相关函数
- java操作properties配置文件
- C语言对文件的操作
- 对文件夹中所文件(csv)进行读写操作
- 文件操作 异步IO
- vc中关于文件的操作
- FTP 打开文件夹提示"该文件没有程序与之关联来执行该操作 请在控制面板"解决方法
- PHP_文件操作及文件下载
- bcb文件操作(1)
- IOUtils 单元(7): TFile 文件操作
- JAVA API操作HDFS文件系统
- Python文件管理对相应目录下的进删除、重命名、移动文件等相应操作
- 关于C#和ASP.NET中对App.config和Web.config文件里的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作
- java实现对文件的各种操作(转)