欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#文件的I/O基本操作

 更新時間:2014年03月10日 14:42:13   作者:  
System.IO命名空間包含允許在數(shù)據(jù)流和文件上進(jìn)行同步,異步及寫入的類型,下面是關(guān)于c#文件的I/O基本操作講解,需要的朋友可以參考下

文件是一些永久存儲及具有特定順序的字節(jié)組成的一個有序的,具有名稱的集合。與文件有關(guān)的概念是目錄路徑和磁盤存儲等。流提供了一種向后備存儲寫入字節(jié)和從后備存儲讀取字節(jié)的方式。后備存儲包裹用文件存儲或用內(nèi)存(數(shù)組)存儲,以及網(wǎng)絡(luò),CD等。

基本文件的I/O

命名空間為System.I/O,程序集為mscorlib(在mscorlib.dll中)
抽象基類Stream支持讀取和寫入字節(jié)。Stream集成了異步支持,其默認(rèn)實現(xiàn)根據(jù)其相應(yīng)的異步方法來定義同步讀取和寫入。
所有表示流的類都是從Stream類繼承的。Stream類及其派生類提供數(shù)據(jù)源和存儲庫的一般視圖,使程序員不必了解操作系統(tǒng)和基礎(chǔ)設(shè)備的具體細(xì)節(jié)。
流涉及3個基本操作:從流讀取,向流寫入以及查找和修改流內(nèi)當(dāng)前位置。根據(jù)基礎(chǔ)數(shù)據(jù)源或存儲庫,流可能只支持這些功能中的一部分。例如,NetworkStream不支持查找。Stream的CanRead,CanWrite和CanSeek屬性及其派生類決定不同的流所支持的操作。

Stream類

stream是所有流的抽象基類。流是字節(jié)序列的抽象概念,如文件,輸入輸出設(shè)備,內(nèi)部進(jìn)程通信管道或TCP/IP套接字。Stream類及其派生類提供這些不同類型的輸入輸出的一般視圖,使程序員不必了解操作系統(tǒng)和基礎(chǔ)設(shè)備的具體細(xì)節(jié)。
如果用MemoryStream初始化流,流的后備存儲是內(nèi)存,容量隨數(shù)據(jù)動態(tài)的增加。如果用FileStream初始化流,流的后備存儲是文件,對流的操作視同對文件的操作。

下面的例子使用Stream..WriteByte和Stream..Read寫入和讀取數(shù)據(jù)塊

復(fù)制代碼 代碼如下:

using System;
using System.IO;
public class Block
{
public static void main()
{
Stream s=new MemoryStream();//產(chǎn)生一個流,它的后備存儲是內(nèi)存
//將一個字節(jié)寫入流內(nèi)的當(dāng)前位置,位置推進(jìn)一個字節(jié)
for(int i=0;i<100;i++)
{
s.WtriteByte((byte)i);
}
s.Positon=0;//流中位置設(shè)置為0
byte[]betes=new byte[1000];
//請求從流中讀取的最大字節(jié)數(shù)等于流的長度
int numBytesToRead=(int)s.Length;
int numBytesRead=0;//偏移量設(shè)置為0
while(numBytesToRead>0)
{
//s.Read從當(dāng)前流讀取字節(jié)序列,并將此流中的位置提升讀取的字節(jié)數(shù)
//返回值n是實際讀取的字節(jié)數(shù),如果已到達(dá)流的末尾則為零(0)
int n=s.Read(   bytes, //數(shù)組bytes接收從流中讀取的字節(jié)
numBytesRead,   //數(shù)組bytes的偏移量,從偏移量開始存儲數(shù)據(jù)
numBytesToRead);//請求讀取的最大字節(jié)數(shù)
if(n==0)
{
break;
}
numBytesRead+=n;
numBytesToRead-=n;
}
s.Close();
//現(xiàn)在請求讀取的字節(jié)數(shù)numBytesToRead為0,偏移量numBytesRead應(yīng)該為100
Console.WriteLine("number of bytes read:"+numBytesRead);
}
}

輸出如下:

復(fù)制代碼 代碼如下:

number of bytes read:100


File類
file類提供用于創(chuàng)建,復(fù)制,刪除,移動和打開文件的靜態(tài)方法,并協(xié)助創(chuàng)建FileStream對象。也可將File類用于獲取和設(shè)置文件屬性或有關(guān)文件創(chuàng)建,訪問及寫入操作的DateTime信息。由于所有的File方法都是靜態(tài)的,因此如果只想執(zhí)行一個操作,則使用File方法的效果比使用相應(yīng)的FileInfo實例方法可能更高

下面演示File類的一些主要成員。代碼中使用Using語句定義一個范圍。將下面的代碼放入Main方法。

復(fù)制代碼 代碼如下:

string path=@"..\...\MyTest.txt";//MyTest.txt位于項目的文件夾
if(!File.Exits(path))
{
//using語句用于定義一個范圍,再次范圍的末尾將釋放對象sw
//StreamWriter實現(xiàn)一個TextWriter,使其以特定的編碼UTF-8向流中寫入字符
//File.CreateText創(chuàng)建或打開一個文件用于寫入UTF-8編碼的文本
using(StreamWriter sw=FIle.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("AND");
sw.WriteLine("Welcome");
}
}
//使用StreamReader讀取標(biāo)準(zhǔn)文本文件的各行信息
using (StreamReader sr=File.OpenText(path))
{
string s="";
//從當(dāng)前的流中讀出一行字符將數(shù)據(jù)作為字符串返回
while((s=sr.ReadLine())!=null)
{
//顯示Mytext.txt的內(nèi)容“Hello/And/Welcome”到屏幕
Console.WriteLine(s);
}
}
try
{
string path2=path+"temp";
File.Delete(path2);//確保目標(biāo)文件不存在
File.Copy(path,path2);//復(fù)制文件
Console.WriteLine("{0}was copied to {1}",path,path2);
File.Delete(path2);
Console.WriteLine("{0}was successfully deleted.",path2);
}
catch(Exception e)
{
Console.WriteLine("The process failed:{0}",e.ToString());
}

運行結(jié)果為程序在本項目文件夾建立一個文本文件MyText.txt,屏幕顯示為:
復(fù)制代碼 代碼如下:

Hello/And/Welcome
..\..\myTest.txt was copied to..\..\myTest.txttemp
..\..\myTest.txt was successfully deleted

 

FileInfo類

FileInfo類提供創(chuàng)建,復(fù)制,刪除,移動和打開文件的實例方法,并且?guī)椭鷦?chuàng)建FileStream對象,如果打算多次重用某個對象,可考慮使用FileInfo的實例方法,而不是File類的相對靜態(tài)方法,以內(nèi)并不總是需要安全檢查
下面的例子是使用FileInfo構(gòu)造函數(shù)創(chuàng)建兩個文件,并接著對其進(jìn)行寫入,讀取,復(fù)制和刪除操作

復(fù)制代碼 代碼如下:

string path=@"..\..\MyText.txt"
FileInfo fil=new FileInfo(path);//FileInfo提供的方法是非靜態(tài)方法,必須實例化
if(!fil.Exists)
{
using(StreamWriter sw=fil.CreaterText())
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
using(StreamReader sr=fil.OpenText())
{
string s="";
while((s=sr.ReadLine())!=null)
Console.WriteLine(s);
}
try
{
string path2=path+"temp";
FileInfo fi2=new FileInfo(path2);
fi2.Delete();//確保目標(biāo)文件不存在
fi1.CopyTo(path2);//復(fù)制文件
Console.WriteLine("{0}was copied to {1}",path,path2);
fi2.Delete();
Console.WriteLine("{0}was successfully deleted",path2);
}
catch(Exception e)
{
Console.WriteLine("The process failed:{0}",e.Tostring());
}

運行結(jié)果為

復(fù)制代碼 代碼如下:

Hello/And/Welcome
..\..\myTest.txt was copied to..\..\myTest.txttemp
..\..\myTest.txt was successfully deleted


下面的一個例子是顯示FileInfo的一些主要成員
復(fù)制代碼 代碼如下:

//創(chuàng)建磁盤上給你唯一命名的零字節(jié)的臨時文件并返回該文件的完整路徑
//此方法創(chuàng)建帶.TMP文件拓展名的臨時文件
string path=Path.GetTempFileName();
//初始化FileInfo類的新實例,它作為文件路徑的包裝
FileInfo fil=new FileInfo(path);
if(!fil.Exists)
{
//fil.CreateText創(chuàng)建吸入新文本文件的StreamWriter
//默認(rèn)情況下,將向所有用戶授予對于新文件的完全讀寫訪問權(quán)限
using(StreamWriter sw=fil.CreateText())
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
using(StreamReader sr=fil.OpenText())//打開文件讀取
{
string s="";
while((s=sr.ReadLine())!=null)
Console.WriteLine(s);
}
try
{
string path2=Path.GetTempFileName();
FileInfo fi2=new FileInfo(path2);
fi2.Delete();
fi1.CopyTo(path2);
Console.WriteLine("{0}was copied to{1}",path,path2);
fi2.Delete();
Console.WriteLine("{0}was successfully deleted.",path2)
}
catch(Exception e)
{
Console.WriteLine("The process failed:{0}",e.ToString());
}

運行結(jié)果如下:
復(fù)制代碼 代碼如下:

C:\Documents and Settings\Administrator\Local Settings\temp\Temp10.tmp was copied to
C:\Documents and Settings\Administrator\Local Settings\temp\Temp11.tmp
C:\Documents and Settings\Administrator\Local Settings\temp\Temp11.tmp was successfully deleted

相關(guān)文章

  • c# 委托詳解

    c# 委托詳解

    本文將通過實例解析對c# 委托進(jìn)行詳細(xì)介紹,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • C#實現(xiàn)簡單超市收銀系統(tǒng)

    C#實現(xiàn)簡單超市收銀系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)簡單超市收銀系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • c#基于Redis實現(xiàn)輕量級消息組件的步驟

    c#基于Redis實現(xiàn)輕量級消息組件的步驟

    這篇文章主要介紹了c#基于Redis實現(xiàn)輕量級消息組件的步驟,幫助大家更好的理解和學(xué)習(xí)使用c#進(jìn)行開發(fā),感興趣的朋友可以了解下
    2021-05-05
  • C#確保只有一個實例在運行的方法

    C#確保只有一個實例在運行的方法

    這篇文章主要介紹了C#確保只有一個實例在運行的方法,涉及C#進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#使用System.Environment獲取電腦的相關(guān)屬性

    C#使用System.Environment獲取電腦的相關(guān)屬性

    這篇文章主要為大家詳細(xì)介紹了C#使用System.Environment獲取電腦的相關(guān)屬性,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • c#實現(xiàn)哈夫曼樹算法

    c#實現(xiàn)哈夫曼樹算法

    這篇文章介紹了c#實現(xiàn)哈夫曼樹的實例代碼,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#貪吃蛇游戲?qū)崿F(xiàn)分析

    C#貪吃蛇游戲?qū)崿F(xiàn)分析

    這篇文章主要為大家分析了C#貪吃蛇游戲的實現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Unity技術(shù)手冊之Toggle切換使用實例

    Unity技術(shù)手冊之Toggle切換使用實例

    這篇文章主要為大家介紹了Unity技術(shù)手冊之Toggle切換使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • C#生成sitemap站點地圖的方法

    C#生成sitemap站點地圖的方法

    C#生成sitemap站點地圖的方法,需要的朋友可以參考一下
    2013-04-04
  • C#獲取指定目錄最后寫入時間的方法

    C#獲取指定目錄最后寫入時間的方法

    這篇文章主要介紹了C#獲取指定目錄最后寫入時間的方法,涉及C#中LastWriteTime屬性的使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論