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-建立
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-寫入
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寫入長度
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();
}
}
}