���������txt������,C#文本文件(.txt)读写

目录

前言读取txt文件写入txt文件

 

 

前言

 

计算机在最初只支持ASCII编码,但是后来为了支持其他语言中的字符(比如汉字)以及一些特殊字符(比如€),就引入了Unicode字符集。基于Unicode字符集的编码方式有很多,比如UTF-7、UTF-8、Unicode以及UTF-32。在Windows操作系统中,一个文本文件的前几个字节是用来指定该文件的编码方式的

 

如果你使用NotePad或WordPad来打开一个文本文件,你并不用担心该文件的编码方式,因为这些应用程序会先读取文件的前几个字节来确定该文件的编码方式,然后用正确的编码将文本中的每个字符显示出来。下面的图中,可以看到当用NotePad记事本保存一个文档时,可以选择的编码(Encoding)方式有哪些

 

用.Net读取文本文件或写入文本文件,你都不需要担心编码方式,.Net已经将这些封装好了。在读取一个文本文件的时候,如果你已经知道文本使用的是什么编码方式,你可以指定使用哪种编码方式读取文本,否则如果不指定编码方式,.Net会读取文本的前几个字节来确定使用哪种编码方式读取文件内容的。在写入文本文件的时候,你也可以指定你想使用的编码方式。如果你没有指定编码,.Net会根据写入的文本是否含有特殊字符来决定编码方式。如果没有特殊字符,就采用ASCII编码,如果有特殊字符,就采用UTF-8编码

 

 

读取txt文件

 

如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(filePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法。它们都一次性将文本内容全部读完,并返回一个包含全部文本内容的字符串

 

string str1 = File.ReadAllText(@"c:\temp\a.txt"); //也可以指定编码方式 string str2 = File.ReadAllText(@"c:\temp\a.txt", Encoding.ASCII);

 

也可以使用方法File.ReadAllLines,该方法一次性读取文本内容的所有行,返回一个字符串数组,数组元素是每一行的内容

string[] strs1 = File.ReadAllLines(@"c:\temp\a.txt"); // 也可以指定编码方式 string[] strs2 = File.ReadAllLines(@"c:\temp\a.txt", Encoding.ASCII);

 

当文本的内容比较大时,我们就不要将文本内容一次性读完,而应该采用流(Stream)的方式来读取内容。

.Net为我们封装了StreamReader类,它旨在以一种特定的编码从字节流中读取字符。StreamReader类的方法不是静态方法,所以要使用该类读取文件首先要实例化该类,在实例化时,要提供读取文件的路径。实例化StreamReader类有很多种方式。下面我罗列出几种:

StreamReader sR1 = new StreamReader(@"c:\temp\a.txt"); // 同样也可以指定编码方式 StreamReader sR2 = new StreamReader(@"c:\temp\a.txt", Encoding.UTF8);FileStream fS = new FileStream(@"C:\temp\a.txt", FileMode.Open, FileAccess.Read, FileShare.None); StreamReader sR3 = new StreamReader(fS); StreamReader sR4 = new StreamReader(fS, Encoding.UTF8);FileInfo myFile = new FileInfo(@"C:\temp\a.txt"); // OpenText 创建一个UTF-8 编码的StreamReader对象 StreamReader sR5 = myFile.OpenText();// OpenText 创建一个UTF-8 编码的StreamReader对象 StreamReader sR6 = File.OpenText(@"C:\temp\a.txt");

初始化完成之后,你可以每次读一行,也可以每次读一个字符 ,还可以每次读几个字符,甚至也可以一次将所有内容全部读完

// 读一行 string nextLine = sR.ReadLine();// 读一个字符 int nextChar = sR.Read();// 读100个字符 int n = 100; char[] charArray = new char[n]; int nCharsRead = sR.Read(charArray, 0, n);// 全部读完 string restOfStream = sR.ReadToEnd();

 

使用完StreamReader之后,不要忘记关闭它: sR.Close();

假如我们需要一行一行的读,将整个文本文件读完,下面看一个完整的例子:

StreamReader sR = File.OpenText(@"C:\temp\a.txt"); string nextLine; while ((nextLine = sR.ReadLine()) != null) { Console.WriteLine(nextLine); } sR.Close();

 

 

写入txt文件

 

写文件和读文件一样,如果你要写入的内容不是很多,可以使用File.WriteAllText方法来一次将内容全部写如文件。如果你要将一个字符串的内容写入文件,可以用File.WriteAllText(FilePath) 或指定编码方式 File.WriteAllText(FilePath, Encoding)方法

string str1 = "Good Morning!"; File.WriteAllText(@"c:\temp\test\a.txt", str1); // 也可以指定编码方式 File.WriteAllText(@"c:\temp\test\a.txt", str1, Encoding.ASCII);

 

如果你有一个字符串数组,你要把数组的每一个元素作为一行写入文件中,可以用File.WriteAllLines方法

string[] strs = { "Good Morning!","Good Afternoon!","Good Evening!"}; File.WriteAllLines(@"c:\temp\a.txt", strs); // 也可以指定编码方式 File.WriteAllLines(@"c:\temp\a.txt", strs, Encoding.ASCII);

 

使用File.WriteAllText或File.WriteAllLines方法时,如果指定的文件路径不存在,会创建一个新文件;如果文件已经存在,则会覆盖原文件

 

当要写入的内容比较多时,同样也要使用流(Stream)的方式写入

.Net为我们封装了StreamWriter类,它以一种特定的编码向字节流中写入字符。StreamWriter类的方法同样也不是静态方法,所以要使用该类写入文件首先要实例化该类,实例化StreamWriter类同样有很多方式:

// 如果文件不存在,创建文件; 如果存在,覆盖文件 StreamWriter sW1 = new StreamWriter(@"c:\temp\a.txt"); // 也可以指定编码方式, true 是 Appendtext, false 为覆盖原文件 StreamWriter sW2 = new StreamWriter(@"c:\temp\a.txt", true, Encoding.UTF8);// FileMode.CreateNew: 如果文件不存在,创建文件;如果文件已经存在,抛出异常 FileStream fS = new FileStream(@"C:\temp\a.txt", FileMode.CreateNew, FileAccess.Write, FileShare.Read); StreamWriter sW3 = new StreamWriter(fS); StreamWriter sW4 = new StreamWriter(fS, Encoding.UTF8);// 如果文件不存在,创建文件; 如果存在,覆盖文件 FileInfo myFile = new FileInfo(@"C:\temp\a.txt"); StreamWriter sW5 = myFile.CreateText();

 

初始化完成后,可以用StreamWriter对象一次写入一行,一个字符,一个字符数组,甚至一个字符数组的一部分

// 写一个字符sw.Write('a');// 写一个字符数组 char[] charArray = new char[100]; sw.Write(charArray);// 写一个字符数组的一部分(10~15)sw.Write(charArray, 10, 15);

 

同样,StreamWriter对象使用完后,不要忘记关闭。sW.Close(); 最后来看一个完整的使用StreamWriter一次写入一行的例子:

FileInfo myFile = new FileInfo(@"C:\temp\a.txt"); StreamWriter sW = myFile.CreateText();string[] strs = { "早上好", "下午好" ,"晚上好};foreach (var s in strs) { sW.WriteLine(s); } sW.Close();

 

txt文件是什么_百度知道 - Baidutxt文件怎么创建?TOMORROW X TOGETHER | BIGHIT MUSICC#文本文件(.txt)读写 - SteveWang - 博客园搜索选书网--奇书网-电子书,电子书下载,TXT电子书全本免费下载在线将PDF 转换成 TXT 。 免费将.PDF 转换成.TXT把 TXT 文档转换成带目录的 MOBI 格式电子书 – 书伴 ...免费在线txt转epub江苏省如东高级中学薏柚醒У人男2019_2020学年高一英语上学期期中试题扫描版江苏省南通��2019_2020学年高一语文上学期第一次教学质量调研试题扫描版无答案江苏省南通��2019_2020学年高一生物上学期第一次教学质量调研试题扫描版无答案江苏省南通��2019_2020学年高二数学上学期第一次教学质量调研试题扫描版无答案江苏省南通��2019_2020学年高一历史上学期第一次教学质量调研试题扫描版无答案江苏省南通��2019_2020学年高一地理上学期第一次教学质量调研试题扫描版无答案江苏省南通��2019_2020学年高一化学上学期第一次教学质量调研试题扫描版无答案江苏省南通��2019_2020学年高一数学上学期第一次教学质量调研试题扫描版无答案江苏省南通��2019_2020学年高一物理上学期第一次教学质量调研试题扫描版无答案江苏省南通��2019_2020学年高一英语上学期第一次教学质量调研试题扫描版无答案河南省信阳市负忧2017_2018学年八年级数学下学期期末考试试题新人教版河南省信阳市负忧2017_2018学年八年级语文下学期期末考试试题新人教版河南省信阳市负忧2017_2018学年八年级物理下学期期末考试试题新人教版河南省信阳市负忧2017_2018学年八年级历史下学期期末考试试题新人教版安徽省宿州市��桥区闵贤中学2016届九年级英语上学期第二次月考试题扫描版安徽省宿州市��桥区闵贤中学2016届九年级历史上学期第二次月考试题扫描版江苏省如东中学薏柚醒2018_2019学年高二地理上学期期末学情检测试题选修含解析江苏省南通��启东中学2019_2020学年高一物理上学期第一次质量检测试题创新班含解析江苏省南通��2019_2020学年高二化学上学期第一次教学质量调研试题选修扫描版无答案江苏省南通��2019_2020学年高二生物上学期第一次教学质量调研试题必修扫描版无答案江苏省南通��2019_2020学年高二历史上学期第一次教学质量调研试题选修扫描版无答案江苏省南通��2019_2020学年高二历史上学期第一次教学质量调研试题必修扫描版无答案江苏省南通市薏韪呒吨醒2019_2020学年高二生物上学期开学考试测试试题含解析安徽省宿州市��桥区2016届九年级物理上学期第二次月考试题扫描版新人教版安徽省宿州市��桥区2016届九年级数学上学期第二次月考试题扫描版新人教版江苏省江阴市��山湾实验学校创新2班2015_2016学年七年级数学上学期期中试题苏科版2019_2020学年高中语文课后作业6]q文氏外孙入村收麦含解析新人教版必修上册江苏省南通市如东中学薏韪咧辛考2018_2019学年高一英语上学期期末考试试题含解析河南省信阳市负忧2017_2018学年八年级道德与法治下学期期末考试试题新人教版2021秋一年级语文上册汉语拼音10aoouiu课堂实录声母与复韵母��oouiu拼成的音节教学片段新人教版
对不起害到你txt全集下载睡了您txt下载楼道放电动车如何举报楼道禁止停放电动车通知上门龙须叶辰萧初然完整版阅读RYOTO菱友牌复配蛋糕乳化剂MFC海贼:旧世界毁灭者!中国远征军对第二次世界大战战局的影响高级会计师考试教材2021年高级会计考试教材已确定我国严打利用微信贴吧等渠道传黄广州东站怎么去东莞中山到广州东站怎么走安卓免费上外网的软件安卓手机外网软件手机怎么上外网html新用户注册页面app注册页面设计网盘老手云资源上海齐奥新封神演绎为何不更新封神演义看不了佛系女配教渣做人澜洇全集最新列表乡村爱情11赵四经典语录