C# 之 对文本文件读写相关

举报
陈言必行 发表于 2021/08/13 22:37:42 2021/08/13
【摘要】 C# 之 对文本文件读写相关 Path类文件相关类FileStream(文件流):读写文本流 Path类 我们不能去实例化Path类,Path类提供了一些静态方法,可以更容易的对路径名执行操作。 Console.WriteLine(Path.Combine(@"c:\my documents","Readme.txt")); 1 在不同的操作系统上,...

Path类

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

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

  
 
  • 1

在不同的操作系统上,路径的表示是不一样的 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中信息:

  1. 要访问的文件 - 一般提供一个文件的完整路径名
  2. 表示如何打开文件的模式 - 新建文件或打开一个现有文件,如果打开一个现有的文件,写入操作是覆盖文件原来的内容,还是追加到文件的末尾?
  3. 表示访问文件的方式 - 只读 只写 还是读写
  4. 共享访问 - 表示是否独占访问文件,如果允许其他流同时访问文件,则这些流是只读 只写 还是读写文件

构造函数的参数:
构造函数的参数的取值

  • FileMode( 打开模式) Append,Create,CreateNew,Open,OpenOrCreate和Truncate
  • FileAccess(读取还是写入) Read,ReadWrite和Write
  • FileShare(文件共享设置) Delete,Inheritable,None,Read,ReadWrite和Write

PS:
如果文件不存在 Append Open和Truncate会抛出异常, 如果文件存在 CreateNew会抛出异常; Create 和 OpenOrCreate Create会删除现有的文件,新建一个空的文件,OpenOrCreate会判断当前是否有文件,没有的话才会创建;

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


读写文本流

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

  1. 创建文本的读取流(会检查字节码标记确定编码格式)
StreamReader sr = new StreamReader(@"c:\xx\Read.txt");

  
 
  • 1
  1. 指定编码格式
StreamReader str = new StreamReader(@"c:\xx\xx.txt",Encoding.UTF8);
(可取的编码格式 ASCII Unicode UTF7 UTF8 UTF32)

  
 
  • 1
  • 2
  1. 在文件流的基础上创建文本读取流
FileStream fs = new FileStream(@"c:\xx\xx.txt",FileMode.Open,FileAccess.Read,FileShare.None);
StreamReader sr = new StreamReader(fs);FileStream fs = new FileStream(@"c:\xx\xx.txt",FileMode.Open,FileAccess.Read,FileShare.None);
StreamReader sr = new StreamReader(fs);

  
 
  • 1
  • 2
  • 3
  1. 通过文件信息创建文本读取流-第二种方式
	FileInfo myFile = new FileInfo(@"c:\xx\xx.txt");
	StreamReader sr = myFile.OpenText();
	sr.Close();

  
 
  • 1
  • 2
  • 3

StreamWriter的创建

1,(默认使用UTF-8编码)

StreamWriter sw = new StreamWriter(@"c:\xx\xx.txt");

  
 
  • 1

2, 第二个参数表示是否以追加的方式打开,第三个参数是编码方式

StreamWriter sw = new StreamWriter(@"c:\xx\xx.txt",true,Encoding.ASCII)

  
 
  • 1

3,通过FileStream创建StreamWriter

FileStream fs = new FileStream(@"c:\xx\xx.txt",FileMode.CreateNew,FileAccess.Write,FileShare.Read);
StreamWriter sw = new StreamWriter(fs);

  
 
  • 1
  • 2

4,通过FileInfo创建StreamWriter

FileInfo myFile = new FileInfo(@"c:\xx\xx.txt");
StreamWriter sw = myFile.CreateText();
sw.Close(); //所有流用完之后关闭 

  
 
  • 1
  • 2
  • 3

写入流的三种写入方式:

1,写入一行字符

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

  
 
  • 1

2,写入一个字符

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

  
 
  • 1
  • 2

3,写入字符数组

char[] charArray = new char[]{'a','b'};
sw.Write(charArray);

  
 
  • 1
  • 2

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

//参数:	charArray:要写入的数组; StartIndexv:开始索引; Length写入长度
sw.Write(charArray,StartIndex,Length);

  
 
  • 1
  • 2

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/78241072

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。