C# 对文件操作

Path类
我们不能去实例化Path类,Path类提供了一些静态方法,可以更容易的对路径名执行操作。

Console.WriteLine(Path.Combine(@"c:\my documents","Readme.txt"));

在不同的操作系统上,路径的表示是不一样的 windows上是 \ , 在Unix就是/ ,我们可以使用Path.Combine连接两个路径,不用关心在哪个系统上。

Path类的一些静态字段

AltDirectorySeparatorChar 提供分割目录的字符,在windows上使用 \ 在Unix上用 /
DirectorySpeparatorChar 提供分割目录的字符,在windows上使用 / 在Unix上用 \
PathSeparator 提供一种与平台无关的方式,来指定划分环境变量的路径字符串,默认为分号
VolumeSepartorChar 提供一种与平台无关的方式,来指定容量分割符,默认为冒号



文件相关类

1,通过FileInfoDirectoryInfo类来读取文件和文件夹属性
查看文件属性,创建文件,移动文件,重命名文件
判断路径是否存在,创建目录
2,通过File读写文件
读写文件
3,使用流来读写文件
FileStream
StreamReader(读取流-读取数据) StreamWriter(写入流-向别人传输)

FileStream(文件流):
FileStream(文件流) 这个类主要用于二进制文件中读写,也可以使用它读写任何文件。
StreamReader(流读取器)和StreamWriter(流写入器)专门用于读写文本文件

使用FileStream读写二进制文件
FileStream实例用于读写文件中的数据,要构造FileStream实例,需要提供下面的4中信息:
要访问的文件 - 一般提供一个文件的完整路径名
表示如何打开文件的模式 - 新建文件或打开一个现有文件,如果打开一个现有的文件,写入操作是覆盖文件原来的内容,还是追加到文件的末尾?
表示访问文件的方式 - 只读 只写 还是读写
共享访问 - 表示是否独占访问文件,如果允许其他流同时访问文件,则这些流是只读 只写 还是读写文件

构造函数的参数:
构造函数的参数的取值
FileMode( 打开模式) Append,Create,CreateNew,Open,OpenOrCreate和Truncate
FileAccess(读取还是写入) Read,ReadWrite和Write
FileShare(文件共享设置) Delete,Inheritable,None,Read,ReadWrite和Write
注意
如果文件不存在 Append Open和Truncate会抛出异常
如果文件存在 CreateNew会抛出异常
Create 和 OpenOrCreate Create会删除现有的文件,新建一个空的文件,OpenOrCreate会判断当前是否有文件,没有的话才会创建

注意:
当我们使用完了一个流之后,一定要调用fs.Close();方法去关闭流,关闭流会释放与它相关联的资源,允许其他应用程序为同一个文件设置流。这个操作也会刷新缓冲区。


读写文本流

我们对文本文件的读写一般使用StreamReader和StreamWriter,因为不同的文本有不同的编码格式,这个StreamReader会帮我们自动处理,所以我们不需要关心文本文件的编码是什么

1,创建文本的读取流(会检查字节码标记确定编码格式)
StreamReader sr = new StreamReader(@”c:\xx\Read.txt”);
2,指定编码格式
StreamReader str = new StreamReader(@”c:\xx\xx.txt”,Encoding.UTF8);
(可取的编码格式 ASCII Unicode UTF7 UTF8 UTF32)
3,在文件流的基础上创建文本读取流
FileStream fs = new FileStream(@”c:\xx\xx.txt”,FileMode.Open,FileAccess.Read,FileShare.None);
StreamReader sr = new StreamReader(fs);
4,通过文件信息创建文本读取流-第二种方式
FileInfo myFile = new FileInfo(@”c:\xx\xx.txt”);
StreamReader sr = myFile.OpenText();
流的关闭 sr.Close();

StreamWriter的创建

1,StreamWriter sw = new StreamWriter(@”c:\xx\xx.txt”);(默认使用UTF-8编码)

2,StreamWriter sw = new StreamWriter(@”c:\xx\xx.txt”,true,Encoding.ASCII)
第二个参数表示是否以追加的方式打开,第三个参数是编码方式

3,通过FileStream创建StreamWriter
FileStream fs = new FileStream(@”c:\xx\xx.txt”,FileMode.CreateNew,FileAccess.Write,FileShare.Read);
StreamWriter sw = new StreamWriter(fs);
4,通过FileInfo创建StreamWriter
FileInfo myFile = new FileInfo(@”c:\xx\xx.txt”);
StreamWriter sw = myFile.CreateText();
所有流用完之后关闭 sw.Close();


写入流的三种写入方式:

1,写入一行字符

    string nextLine = "x xx x x x x ";sw.Write(nextLine);

2,写入一个字符

char nextChar = 'a';
    sw.Write(nextChar);

3,写入字符数组

char[] charArray = ..;
    sw.Write(charArray);

4,写入字符数组的一部分

sw.Write(charArray,StartIndex,Length);
1:要写入的数组 2:开始索引 3写入长度

你可能感兴趣的:(ジ﹋★☆『,C,#...,』,C#,从零开启)