一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

淺析C#中的文件操作...

 ShangShujie 2006-11-06

微軟的.Net框架為我們提供了基于流的I/O操作方式,這樣就大大簡化了開發(fā)者的工作。因?yàn)槲覀兛梢詫σ幌盗械耐ㄓ脤ο筮M(jìn)行操作,而不必關(guān)心該I/O操作是和本機(jī)的文件有關(guān)還是和網(wǎng)絡(luò)中的數(shù)據(jù)有關(guān)。.Net框架主要為我們提供了一個System.IO命名空間,該命名空間基本包含了所有和I/O操作相關(guān)的類。

本文將向大家介紹一些基本的文件操作方法,包括對文件系統(tǒng)中的目錄和文件的操作,還有就是文件的讀寫操作等。通過運(yùn)用System.IO.DirectoryInfo類和System.IO.FileInfo類我們可以輕易的完成與目錄和文件相關(guān)的操作,而通過運(yùn)用System.IO.StreamReader類和System.IO.StreamWriter類我們可以方便的完成與文件的讀寫相關(guān)的操作。

命名空間概覽

下面的表格顯示了System.IO命名空間中最重要的一些類,通過運(yùn)用這些類我們就能完成基本的文件操作。

表1

類名 功能和用途
BinaryReader、BinaryWriter 讀寫二進(jìn)制數(shù)據(jù)
Directory、File、DirectoryInfo以及FileInfo 創(chuàng)建、刪除并移動目錄和文件,通過屬性獲取特定目錄和文件的相關(guān)信息
FileStream 以隨機(jī)方式訪問文件
MemoryStream 訪問存儲在內(nèi)存中的數(shù)據(jù)
StreamReader 、StreamWriter 讀寫文本數(shù)據(jù)信息
StringReader、StringWriter 運(yùn)用字符串緩沖讀寫文本數(shù)據(jù)信息

運(yùn)用DirectoryInfo類和FileInfo類

DirectoryInfo類和FileInfo類的基類都是FileSystemInfo類,這個類是一個抽象類,也就是說你不可以實(shí)例化該類,只能通過繼承產(chǎn)生其子類并實(shí)例化其子類。然而你卻可以運(yùn)用由該類定義的各種屬性,下面的表格顯示了該類已經(jīng)定義了的各種屬性。

表2

屬性 功能和用途
Attributes 返回和文件相關(guān)的屬性值,運(yùn)用了FileAttributes枚舉類型值
CreationTime 返回文件的創(chuàng)建時間
Exists 檢查文件是否存在于給定的目錄中
Extension 返回文件的擴(kuò)展名
LastAccessTime 返回文件的上次訪問時間
FullName 返回文件的絕對路徑
LastWriteTime 返回文件的上次寫操作時間
Name 返回給定文件的文件名
Delete() 刪除一個文件的方法,請務(wù)必謹(jǐn)慎地運(yùn)用該方法

DirectoryInfo類提供了創(chuàng)建、刪除和移動目錄等方法,要運(yùn)用表2中的各種屬性,我們首先得創(chuàng)建一個DirectoryInfo類的對象,然后就可以訪問其各種屬性了。

DirectoryInfo dir1 = new DirectoryInfo(@"F:\Test");
            Console.WriteLine("Full Name is : {0}", dir1.FullName);
            Console.WriteLine("Attributes are : {0}", dir1.Attributes.ToString());

同時,我們還可以運(yùn)用FileAttributes枚舉類型值來獲取和文件相關(guān)的各種屬性,下面的表格就顯示了該枚舉類型中的各種值。

表3

功能和用途
Archive 返回文件的存檔狀態(tài)
Compressed 返回文件是否被壓縮
Directory 返回文件是否是一個目錄
Encrypted 返回文件是否被加密
Hidden 返回文件是否是隱藏的
Offline 表明文件數(shù)據(jù)是不可得的
ReadOnly 表明文件是只讀的
System 表明文件是一個系統(tǒng)文件

目錄下的文件操作

運(yùn)用DirectoryInfo類的對象我們可以輕松的實(shí)現(xiàn)對目錄以及和目錄中的文件相關(guān)的操作,假如你要獲得某個目錄F:\Pictures下的所有BMP文件,那么通過下面的代碼就可以實(shí)現(xiàn)該功能。

DirectoryInfo dir = new DirectoryInfo(@"F:\ Pictures");
            FileInfo[] bmpfiles = dir.GetFiles("*.bmp);
            Console.WriteLine("Total number of bmp files", bmpfiles.Length);
            Foreach( FileInfo f in bmpfiles)
            {
            Console.WriteLine("Name is : {0}", f.Name);
            Console.WriteLine("Length of the file is : {0}", f.Length);
            Console.WriteLine("Creation time is : {0}", f.CreationTime);
            Console.WriteLine("Attributes of the file are : {0}",
            f.Attributes.ToString());
            }

上面的代碼中我們首先創(chuàng)建了一個DirectoryInfo對象,然后通過調(diào)用該對象的GetFiles方法獲取目錄F:\Pictures下的所有以bmp為擴(kuò)展名的文件,該方法返回的值是一個FileInfo類型的數(shù)組,每個元素則代表一個文件。最后,程序還列舉了每個BMP文件的相關(guān)屬性。

創(chuàng)建子目錄

運(yùn)用DirectoryInfo類創(chuàng)建子目錄是非常容易的,你只要調(diào)用其中CreateSubdirectory()方法即可,演示代碼如下。

DirectoryInfo dir = new DirectoryInfo(@"F:\ Pictures");
            try
            {
            dir.CreateSubdirectory("Sub");
            dir.CreateSubdirectory(@"Sub\MySub");
            }
            catch(IOException e)
            {
            Console.WriteLine(e.Message);
            }

運(yùn)用FileInfo類創(chuàng)建、刪除文件

通過FileInfo類,我們可以方便地創(chuàng)建出文件,并可以訪問文件的屬性同時還可以對文件進(jìn)行打開文件、關(guān)閉文件、讀寫文件等基本的操作。下面的代碼顯示了如何創(chuàng)建一個文本文件并且去訪問其創(chuàng)建時間、文件的絕對路徑以及文件屬性等文件信息,最后程序還給出了刪除文件的方法。

FileInfo fi = new FileInfo(@"F:\Myprogram.txt");
            FileStream fs = fi.Create();
            Console.WriteLine("Creation Time: {0}",fi.CreationTime);
            Console.WriteLine("Full Name: {0}",fi.FullName);
            Console.WriteLine("FileAttributes: {0}",fi.Attributes.ToString());
            Console.WriteLine("Press any key to delete the file");
            Console.Read();
            fstr.Close();
            fi.Delete();

理解FileInfo類的Open()方法

我們在對文件進(jìn)行讀寫操作之前必須打開文件,F(xiàn)ileInfo類為我們提供了一個Open()方法,該方法包含了兩個枚舉類型值的參數(shù),一個為FileMode枚舉類型值,另一個為FileAccess枚舉類型值。通過設(shè)定這兩個參數(shù)值,我們可以對文件的訪問模式和操作權(quán)限進(jìn)行控制。下面的兩個表格分別顯示了FileMode枚舉類型的值和FileAccess枚舉類型的值。

表4

功能和用途
Append 打開文件并添加數(shù)據(jù),運(yùn)用該方法時FileAccess枚舉類型值應(yīng)為Write。
Create 創(chuàng)建一個新文件,有可能會覆蓋已經(jīng)存在的文件。
CreateNew 創(chuàng)建一個新文件,如果該文件已經(jīng)存在,則拋出IOException異常。
Open 打開一個已經(jīng)存在的文件。
OpenOrCreate 打開文件,如果該文件不存在,則創(chuàng)建之。
Truncate 截短一個已經(jīng)存在的文件。

表5

功能和用途
Read 可以從一個文件中讀取數(shù)據(jù)。
ReadWrite 可以從一個文件中讀取數(shù)據(jù),同時還可以向文件中寫入數(shù)據(jù)。
Write 可以向文件中寫入數(shù)據(jù)。

下面的代碼顯示了Open()方法的具體運(yùn)用方法。

FileInfo f = new FileInfo("F:\MyFile.txt");
            FileStream s = f.Open(FileMode.OpenorWrite, FileAccess.Read);

運(yùn)用StreamReader類和StreamWriter類實(shí)現(xiàn)文件的讀寫操作

對文件的讀寫操作應(yīng)該是最重要的文件操作,System.IO命名空間為我們提供了諸多文件讀寫操作類,在這里我要向大家介紹最常用也是最基本的StreamReader類和StreamWriter類。從這兩個類的名稱我們不難發(fā)現(xiàn)它們都是基于流的讀寫操作類。

我們可以通過File類的OpenText()方法來獲取一個StreamReader對象,通過該對象我們可以實(shí)現(xiàn)對文本文件的讀操作,方法如下:

Console.WriteLine("Reading the contents from the file");
            StreamReader s = File.OpenText("MyText.txt");
            string read = null;
            while ((read = s.ReadLine()) != null)
            {
            Console.WriteLine(read);
            }
            s.Close();

而通過調(diào)用FileInfo類的CreateText()方法我們可以獲取一個StreamWriter對象,調(diào)用StreamWriter類的WriteLine()我們就可以向文本文件中寫入數(shù)據(jù)了,方法如下:

FileInfo f = new FileInfo("MyText.txt")
            StreamWriter w = f.CreateText();
            w.WriteLine("This is from");
            w.WriteLine("Chapter 1");
            w.WriteLine("Of C# Module");
            w.Write(w.NewLine);
            w.WriteLine("Thanks for your time");
            w.Close();

總結(jié)

以上我簡要地向大家介紹了C#文件操作的基本知識和方法,通過本文大家不難發(fā)現(xiàn).Net框架下I/O操作的方便性。讀者在學(xué)習(xí)了本文后,如果要進(jìn)行一些基本的文件操作,那么對于System.IO命名空間中的諸如DirectoryInfo類、FileInfo類、FileStream類、StreamReader類以及StreamWriter類等類一定得有基本了解并在實(shí)際應(yīng)用中靈活使用之。如果要對文件操作有更進(jìn)一步的控制,那么不妨去研究一下System.IO命名空間中的更為具體和細(xì)節(jié)的一些類。最后,希望本文對大家能有所幫助。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产盗摄精品一区二区视频| 99热在线精品视频观看| 午夜视频成人在线免费| 又大又长又粗又黄国产| 亚洲欧美中文日韩综合| 久久机热频这里只精品| 国产又爽又猛又粗又色对黄| 国产精品免费无遮挡不卡视频| 日韩一级一片内射视频4k| 高清亚洲精品中文字幕乱码| 中文文精品字幕一区二区 | 久久国产人妻一区二区免费| 欧美加勒比一区二区三区| 国产伦精品一一区二区三区高清版 | 成人午夜视频精品一区| 久久老熟女一区二区三区福利| 日韩精品视频一二三区| 亚洲av在线视频一区| 男人和女人干逼的视频| 丝袜诱惑一区二区三区| 日本亚洲精品在线观看| 在线免费不卡亚洲国产| 国产成人亚洲综合色就色| 日本东京热视频一区二区三区| 国产午夜福利在线观看精品| 99国产精品国产精品九九| 国产成人av在线免播放观看av| 色婷婷久久五月中文字幕| 99热中文字幕在线精品| 久久国产人妻一区二区免费| 91在线爽的少妇嗷嗷叫| 中文字幕区自拍偷拍区| 国产主播精品福利午夜二区| 爱在午夜降临前在线观看| 欧美日韩一级aa大片| 东京热男人的天堂一二三区| 欧美精品一区久久精品| 五月婷婷六月丁香狠狠| 人妻一区二区三区在线| 国产欧美一区二区色综合| 亚洲精品有码中文字幕在线观看|