c#文件操做

                                                                                                                                                                           

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

程序截圖:

相關文章
相關標籤/搜索