1.读写文本文件
我们对文本文件的读写一般使用StreamReader和StreamWriter,因为不同的文本有不同的编码格式,这个StreamReader会帮我们自动处理,所以我们不需要关心文本文件的编码是什么1,创建文本的读取流(会检查字节码标记确定编码格式)
StreamReader sr = newStreamReader(@"c:\xx\ReadMe.txt");
2,指定编码格式
StreamReader str = newStreamReader(@"c:\xx\xx.txt",Encoding.UTF8);
(可取的编码格式 ASCII Unicode UTF7 UTF8 UTF32)
3,在文件流的基础上创建文本读取流
FileStream fs = newFileStream(@"c:\xx\xx.txt",FileMode.Open,FileAccess.Read,FileShare.None);
StreamReader sr = new StreamReader(fs);
4,通过文件信息创建文本读取流-第二种方式
FileInfo myFile = newFileInfo(@"c:\xx\xx.txt");
StreamReader sr = myFile.OpenText();
流的关闭sr.Close();
1.2.读取文本文件
1,stringnextLine = sr.ReadLine();//读取一行字符串2,stringrestOfStream = sr.ReadToEnd();//读取流中所有剩余的文本内容
3,intnextChar = sr.Read();//只读取一个字符
4, int nChars = 100;
char[] charArray = new char[nChars];
int nCharsRead = sr.Read(charArray,0,nChars);读取多个字符,第一个参数是要存放的字符数组,第二个参数是从数组的哪一个索引开始放,第三个参数是读取多少个字符 返回值是实际读取的字符的个数
1.3文本写入流StreamWriter-创建
1,StreamWritersw = new StreamWriter(@"c:\xx\xx.txt");(默认使用UTF-8编码)
2,StreamWritersw = new StreamWriter(@"c:\xx\xx.txt",true,Encoding.ASCII)
第二个参数表示是否以追加的方式打开,第三个参数是编码方式
3,通过FileStream创建StreamWriter
FileStream fs = newFileStream(@"c:\xx\xx.txt",FileMode.CreateNew,FileAccess.Write,FileShare.Read);
StreamWriter sw = new StreamWriter(fs);
4,通过FileInfo创建StreamWriter
FileInfo myFile = newFileInfo(@"c:\xx\xx.txt");
StreamWriter sw = myFile.CreateText();
所有流用完之后关闭sw.Close();
1.4文本写入流StreamWriter-写入
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写入长度
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _329_使用streamReader和streamWriter读写文本文件
{
class Program
{
static void Main(string[] args)
{
//创建文本文件读取流
StreamReader reader = new StreamReader("TextFile1.txt");
///(一)
//while(true)
//{
// string str = reader.ReadLine();//读取一行字符串
// if (str == null) break;
// Console.WriteLine(str);
//}
///(二)
//string str= reader.ReadToEnd();//读取到文件结尾,读取文本中所有字符串
//Console.WriteLine(str);
///(三)
//while(true)
//{
// int res= reader.Read();//读取一个字符
// if(res==-1)
// {
// break;
// }
// else
// {
// Console.Write((char)res);
// }
//}
//文本文件写入流
StreamWriter writer = new StreamWriter("textfile2.txt");
while(true)
{
string message = Console.ReadLine();
if (message == "q")
break;
//writer.Write(message);//写入字符串
writer.WriteLine(message);//写入一个字符串并换行
}
writer.Close();
Console.ReadKey();
}
}
}