天天看點

讀寫文本檔案-StreamReader和StreamWriter1.讀寫文本檔案

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();
        }
    }
}
           

繼續閱讀