1、 File文件建立、複製、移動、刪除操做c#
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace 文件建立複製移動刪除操做 { class Program { static void Main(string[] args) { //設置控制檯標題和指明文件路徑 Console.Title="文件建立、複製、移動、刪除操做"; string path1 = "1.txt"; string path2 = "2.txt"; string path3="d:\\3.txt"; string path4 = @"c:\4.txt"; //要寫入的文本字符串 string msg = "文件基本操做示例"; msg += Environment.NewLine + " A.建立文件;B.複製文件;C.移動文件;D:刪除文件;";//Environment.NewLine屬性用於獲取爲當前環境定義的換行字符串 //在path1指定的路徑中建立或覆蓋文件,並將msg字符串寫入文件中。 FileStream fs = File.Create(path1);//建立文件流,在path1指定的路徑中建立或覆蓋文件 byte[] contents = Encoding.Default.GetBytes(msg);//將msg字符串的字符編碼變成當前ANSI代碼頁的編碼並保存到byte數組中 fs.Write(contents,0,contents.Length);//從contents中讀取字符串,從0位置開始將字符串長度大小的字符串寫入到文本中。 fs.Close();//關閉文件流 //打印寫入paht1路徑下文件內容 string str=File.ReadAllText(path1,Encoding.Default);//讀取path1指定的文件中的全部文本內容保存到字符串str中中。 Console.WriteLine("1.txt已經被成功建立!\n\n"); Console.WriteLine("\t建立1.txt並寫入文件,其內容以下:\n\n"); Console.WriteLine(" "+str ); Console.ReadKey(); //將path1路徑下文件複製到path2指定的路徑 if(File.Exists(path2))//若是path2下有同名文件就將其刪除 File.Delete(path2); File.Copy(path1,path2);//將path1路徑下的文件複製到文件path2路徑下的文件 Console.WriteLine("\n1.txt被成功複製出一個2.txt"); Console.ReadKey(); //將path1路徑下文件移動到path3指定的路徑 File.Move(path1, path3); Console.WriteLine("\n1.txt文件被成功移到D盤根目錄並重命名爲3.txt"); Console.ReadKey(); //將path2路徑下文件移動到path4指定的路徑 File.Move(path2, path4); Console.WriteLine("\n2.txt一個文件被成功移動到C盤並改名爲4.txt"); Console.ReadKey(); //刪除三個文件 File.Delete(path2); File.Delete(path3); File.Delete(path4); Console.WriteLine("\n三個文件被成功刪除。"); Console.ReadKey(); } } }
程序截圖:數組
二、文件類File讀取記事本內容學習
主要知識點:編碼
一. FileStream file_read = new FileStream("1.txt", FileMode.Open, FileAccess.Read);//只讀權限打開1.txt文件spa
參數1:操作系統
"1.txt":文件路徑,一般用字符串變量或者字符串常量表示,如:"d:\\1.txt";code
參數2:blog
FileMode.Open:打開模式,此種方式若是存在則打開,不然拋出異常。內存
FileMode.Append:追加模式,打開文件或新建文件並查找到文件尾,只能在FileAccess.Write權限下使用。字符串
FileMode.Create:指定操做系統建立文件,若是已存在相同名稱文件,則覆蓋。
FileMode.CreateNew:指定操做系統建立文件,若是已存在相同名稱文件,則拋出異常。
FileMode.OpenOrCreate:若是文件存在,則打開。若是不存在則新建一個文件。
FileMode.Truncate:打開現有文件,文件一旦被打開就被截斷爲0字節大小。
參數3:
FileAccess.Read:只讀寫權限
FileAccess.ReadWrite:讀寫權限
FileAccess.Write:寫權限
2、StreamReader sr = new StreamReader(file_read,Encoding.Default);//獲取讀入流讀取1.txt
參數1:
file_read:獲取文件流,即獲取指定文件文件流,一般用字符串變量表示。
參數2:
Encoding.Default:獲取操做系統的當前ANSI代碼頁的編碼
Encoding.UTF8:獲取UTF8格式的編碼
Encoding.Unicode:獲取Unocode格式的編碼
Encoding.ASCII:獲取ASCLL格式的編碼
Encoding.Convert (Encoding, Encoding, Byte[]) :將一種編碼方式轉換成另外一種編碼方式。
Encoding.Convert (Encoding, Encoding, Byte[], Int32, Int32) :將某一範圍內由一種編碼方式轉換成另外一種編碼方式。
3、string[] filelist = File.ReadAllLines("1.txt", Encoding.Default);//讀取文件內容全部行保存到字符串數組中。
4、string line = sr.ReadLine();//讀取一行文件內容,從讀入流獲取內容。
例子一:
核心方法:string[] filelist = File.ReadAllLines("1.txt", Encoding.Default);//讀取文件內容全部行保存到字符串數組中
代碼以下:
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace studyread { class Program { static void Main(string[] args) { FileStream file_read = new FileStream("1.txt", FileMode.Open, FileAccess.Read);//新建文件流,只讀權限打開1.txt文件 string[] filelist = File.ReadAllLines("1.txt", Encoding.Default);//讀取文件內容全部行保存到字符串數組中。 //循環打印讀入內容。 for (int i = 0; i <= filelist.Length - 1; i++) { Console.WriteLine("第{0}行內容爲:{1}", i, filelist[i]); } Console.ReadKey(); } } }
運行截圖:
例子二:
核心語句:string line = sr.ReadLine();//讀取一行文件內容,從讀入流獲取內容。
代碼以下:
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace studyread { class Program { static void Main(string[] args) { FileStream file_read = new FileStream("1.txt", FileMode.Open, FileAccess.Read);//新建文件流,只讀權限打開1.txt文件 StreamReader sr = new StreamReader(file_read, Encoding.Default);//新建讀入流取文件流 string line= sr.ReadLine();;//讀取一行內存保存給字符串line Console.WriteLine(line); Console.ReadKey(); } } }
運行截圖:
固然上列代碼利用循環也能夠將全部內容讀取出來,達到例子一的效果。
修改源碼以下:
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace studyread { class Program { static void Main(string[] args) { FileStream file_read = new FileStream("1.txt", FileMode.Open, FileAccess.Read);//新建文件流,只讀權限打開1.txt文件 StreamReader sr = new StreamReader(file_read, Encoding.Default);//新建讀入流取文件流 string[] filelist = File.ReadAllLines("1.txt", Encoding.ASCII);//這裏主要用來獲取總行數filelist.Length string line;//定義字符串變量line,用來保存讀取的內容 //循環讀取並打印文件每一行內容,即 for (int i = 0; i <= filelist.Length - 1; i++) { line = sr.ReadLine();//讀取一行內容保存到字符串line中。 Console.WriteLine(line); } Console.ReadKey(); } } }
程序截圖:
附錄記事本文件內容:
3、文件類File寫入和追加記事本內容
代碼以下:
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace study文件操做 { class Program { static void Main(string[] args) { //控制檯標題設置和指定文件路徑 Console.Title = "文件讀寫操做實例";//控制檯標題 string path = "d:\\test.txt"; //指定文件絕對路徑 //定義要寫入和追加的字符串 string[] strs = { "窗前明月光,", "疑是地上霜." };//要寫入的字符串 string contents = "明月幾時有?" + Environment.NewLine + "把酒問青天";//要追加的字符串 //獲取文件絕對路徑 Console.WriteLine("文件絕對路徑以下:\n{0}", Path.GetFullPath(path));//獲取文件絕對路徑 Console.ReadKey(); //將字符串寫入文件 /*Encoding.Default屬性用於獲取操做系統當前ANSI代碼頁的編碼*/ File.WriteAllLines(path, strs, Encoding.Default);//文件存在則打開,不然創建文件並寫入內容 Console.WriteLine("\n要寫入的字符串已經成功寫入文件!"); Console.ReadKey(); //字符串追加文件 File.AppendAllText(path, contents, Encoding.Default);//將字符串追加到文本末尾 Console.WriteLine("文件追加字符串成功!\n"); Console.ReadKey(); //獲取文件行數,並打印總行數 string[] lines = File.ReadAllLines(path, Encoding.Default);//獲取文件總行數 Console.WriteLine("文件包含如下{0}行內容", lines.Length); Console.ReadKey(); //逐行打印每行內容 for (int i = 0; i < lines.Length; i++) { Console.WriteLine(" "+lines[i]); } //獲取並打印文件創建、修改、訪問時間 Console.WriteLine("\n文件建立時間:{0:F}",File.GetCreationTime(path)); Console.WriteLine("文件最後修改時間:{0:F}",File.GetLastWriteTime(path)); Console.WriteLine("文件最後訪問時間:{0:F}",File.GetLastAccessTime(path)); Console.ReadKey(); } } }
程序運行截圖:
4、c#用FileInfo類複製、移動、刪除文件
源碼以下:
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace 文件信息類FileInfo { class Program { static void Main(string[] args) { //設置控制檯標題和指明文件路徑 Console.Title = "用FileInfo類執行文件操做示例"; string path1 = "1.txt"; FileInfo myFile = new FileInfo(path1); //建立並寫入文本 //建立寫入新文本文件的StreamWriter using (StreamWriter sw = myFile.CreateText()) { //WriteLine方法後跟行結束符的字符串寫入文本流 sw.WriteLine("白日依山盡,黃河入海流。"); sw.WriteLine("欲窮千里目,更上一層樓。"); Console.WriteLine("文本文件建立成功!"); } //追加文本 //建立一個StreamWriter,在FileInfo指定的文本選中追加文本 using (StreamWriter sw = myFile.AppendText()) { //WriteLine方法後跟行結束符的字符串寫入文本流 sw.WriteLine("問君能有幾多愁?恰似一江春水向東流"); sw.WriteLine("明月幾時有?把酒問青天"); Console.WriteLine("文本文件追加成功!"); } //讀取文本 //建立從現有文本文件中進行讀取的StreamReader using (StreamReader sr = myFile.OpenText()) //建立使用UTF8編碼並從現有文件讀取的StreamReader { string s = ""; //Readline方法從當前流中讀取一行字符並將數據做爲字符串返回 Console.WriteLine("\n文本文件內容以下:"); while ((s = sr.ReadLine()) != null) { Console.WriteLine(" " + s); } } //列出文本文件的相關信息 Console.WriteLine("\n文件所在目錄:{0}", myFile.DirectoryName); Console.WriteLine("\n文件擴展名:{0}", myFile.Extension); Console.WriteLine("\n文件大小:{0}字節", myFile.Length); Console.WriteLine("\n文件建立時間:", myFile.CreationTime); Console.WriteLine("\n文件最後修改時間:{0:F}", myFile.LastWriteTime); Console.WriteLine("\n文件最後訪問時間:{0:F}", myFile.LastAccessTime); //複製文件和刪除文件 try { string path2 = path1 + ".tmp"; FileInfo file2 = new FileInfo(path2); myFile.CopyTo(path2);//複製文件 Console.WriteLine("\n文件{0}已經被複制到{1}", path1, path2); Console.ReadKey(); file2.Delete();//刪除文件 Console.WriteLine("\n文件{0}已被成功刪除!\n", path2); } catch (Exception e) { Console.WriteLine("\n文件操做失敗:{0}", e.ToString()); } Console.ReadKey(); } } }
5、FileStream文件流寫入和讀取記事本文件
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace 文件流FileStream { class Program { static void Main(string[] args) { //設置控制檯標題,指明文件路徑。 Console.Title = "FileStream文件流操做示例"; const string path = "Test.txt";//const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值是常數,不能被修改 //定義要寫入的字符串 string n1 = Environment.NewLine; string str = "題西林壁" + n1 + "橫當作嶺側成峯,遠近高低各不一樣。" + n1 + "不識廬山真面目,只緣身在此山中。"; //將str中的字符串複製到字符數組charData中 char[] charData = str.ToCharArray(); int count = Encoding.Default.GetByteCount(charData);//count保存charData字符數組的中的全部字符編碼產生的字節數 byte[] byteData1 = new byte[count];//新建一個編碼後字節大小的字符數組bytaData1 byte[] byteData2 = new byte[count];//新建一個編碼後的字節大小的字符數組bytaData2 byte[] byteData3 = new byte[40];//新建一個編碼後的字節大小爲40的字符數組。 try { FileStream fs = new FileStream(path, FileMode.Create);//若是Test.txt已經存在,則覆蓋,不然建立Test.txt文件 Encoder encoder = Encoding.Default.GetEncoder();//獲取一個解碼器 encoder.GetBytes(charData, 0, charData.Length, byteData1, 0, true);//將charData字符數組所有內容,進行解碼。 fs.Seek(0, SeekOrigin.Begin);//光標定位到文件開始 fs.Write(byteData1, 0, byteData1.Length);//從byteData中的0字節處開始寫入數據,寫完爲止 Console.WriteLine("文件建立成功!"); fs.Close(); } catch (IOException e) { Console.WriteLine("文件寫入操做失敗:{0}\n", e.ToString()); return; } try { FileStream fs = new FileStream(path, FileMode.Open);//以打開模式新建文件流 fs.Seek(0, SeekOrigin.Begin);//光標定位文件開始處 fs.Read(byteData2, 0, count);//從緩衝區0字節處讀取數據,從byteData2中的0字節處開始保存,保存全部內容。 fs.Seek(44, SeekOrigin.Begin);//光標定位到44字節處 fs.Read(byteData3, 0, 40);//從緩衝區44字節處讀取數據,從byteData3中的0字節處開始保存,保存剩下內容。 fs.Close(); } catch (IOException e) { Console.WriteLine("文件讀取失敗:{0}", e.ToString()); } string content1 = Encoding.Default.GetString(byteData2);//將byteData2字符數組解碼成字符串 Console.WriteLine("\n文本內容以下:"); Console.WriteLine(content1); string content2 = Encoding.Default.GetString(byteData3);//將byteData3字符數組解碼成字符串 Console.WriteLine("\n從文件中讀取40個字節:"); Console.WriteLine(content2); Console.WriteLine(); Console.ReadKey(); } } }
程序運行截圖:
6、用StreamWriter類寫入文件應用示例
代碼以下:
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace 流寫入類StreamWriter { class Program { static void Main(string[] args) { Console.Title = "用StreamWriter類寫入文件應用示例"; string path = "Test.txt"; StreamWriter sw = new StreamWriter(path, false, Encoding.Default, 512); sw.WriteLine("春曉"); sw.WriteLine("春明不覺曉,到處聞啼鳥。"); sw.WriteLine("夜來風雨聲,花落知多少."); sw.Close(); Console.WriteLine("文本文件寫入成功!\n"); Console.ReadKey(); } } }
程序截圖:
7、StreamReader類讀取文件應用示例
源碼以下:
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace StreamReader學習 { class Program { static void Main(string[] args) { Console.Title = "用StrreamReader類讀取文件應用示例"; string path = "Test.txt"; try { if (File.Exists(path)) { File.Delete(path); } using (StreamWriter sw = new StreamWriter(path)) { sw.WriteLine(" 早發白帝城"); sw.WriteLine("朝辭白帝彩雲間,千里江陵一日還。"); sw.WriteLine("兩岸猿聲啼不住,輕舟已過萬重山。"); Console.WriteLine("文本文件建立成功!"); } Console.WriteLine("文件內容以下:"); using (StreamReader sr = new StreamReader(path)) { while (sr.Peek() >= 0) { Console.WriteLine(" " + sr.ReadLine()); } } } catch (Exception e) { Console.WriteLine("文件操做過程失敗:{0}\n", e.ToString()); } Console.ReadKey(); } } }
程序截圖: