最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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#實現(xiàn)學(xué)生成績管理系統(tǒng)

    C#實現(xiàn)學(xué)生成績管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C#?wpf使用DockPanel實現(xiàn)制作截屏框

    C#?wpf使用DockPanel實現(xiàn)制作截屏框

    做桌面客戶端的時候有時需要實現(xiàn)截屏功能,能夠在界面上框選截屏,本文就來為大家介紹一下wpf如何使用DockPanel制作截屏框吧,感興趣的可以了解下
    2023-09-09
  • C#中異步Socket通信編程代碼實例

    C#中異步Socket通信編程代碼實例

    這篇文章主要介紹了C#中異步Socket通信編程代碼實例,本文講解了什么是Socket編程的異步是實現(xiàn)、如何實現(xiàn)Socket異步通信并給出了代碼實例,需要的朋友可以參考下
    2015-03-03
  • C# 基礎(chǔ)入門--變量

    C# 基礎(chǔ)入門--變量

    本文主要介紹了C#中變量的基礎(chǔ)知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • C#面向?qū)ο髮崿F(xiàn)圖書管理系統(tǒng)

    C#面向?qū)ο髮崿F(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#面向?qū)ο髮崿F(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • c#操作sql server2008 的界面實例代碼

    c#操作sql server2008 的界面實例代碼

    這篇文章主要介紹了c#操作sql server2008 的界面實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • 利用C#代碼實現(xiàn)圖片旋轉(zhuǎn)360度

    利用C#代碼實現(xiàn)圖片旋轉(zhuǎn)360度

    本文介紹利用C#代碼實現(xiàn)圖片旋轉(zhuǎn)360度,具體實例代碼已附上,僅供大家參考,希望對大家有所幫助
    2016-11-11
  • C#?WPF數(shù)據(jù)綁定模板化操作的完整步驟

    C#?WPF數(shù)據(jù)綁定模板化操作的完整步驟

    WPF中的數(shù)據(jù)綁定提供了很強(qiáng)大的功能,與普通的WinForm程序相比,其綁定功能為我們提供了很多便利,下面這篇文章主要給大家介紹了關(guān)于C#?WPF數(shù)據(jù)綁定模板化操作的完整步驟,需要的朋友可以參考下
    2022-01-01
  • .NET使用IResourceMonitor實現(xiàn)獲取資源信息

    .NET使用IResourceMonitor實現(xiàn)獲取資源信息

    在 Microsoft.Extensions.Diagnostics.ResourceMonitoring 包提供了一系列定制 API,專用于監(jiān)視 .NET 應(yīng)用程序的資源利用率,本文將利用IResourceMonitor來實現(xiàn)獲取資源狀態(tài)信息,感興趣的可以了解下
    2024-01-01
  • 深入c# 類和結(jié)構(gòu)的區(qū)別總結(jié)詳解

    深入c# 類和結(jié)構(gòu)的區(qū)別總結(jié)詳解

    本篇文章是對c#中類和結(jié)構(gòu)的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

南岸区| 白城市| 乐清市| 醴陵市| 蒲城县| 潼关县| 婺源县| 巴东县| 大名县| 蒲城县| 民权县| 新乐市| 柞水县| 万山特区| 邓州市| 南宫市| 兰考县| 阿拉尔市| 夏津县| 陈巴尔虎旗| 运城市| 唐河县| 六枝特区| 澎湖县| 达州市| 彰化县| 云浮市| 建水县| 新民市| 淅川县| 桃江县| 酉阳| 灯塔市| 勃利县| 开远市| 阿勒泰市| 名山县| 上思县| 乐安县| 渝北区| 措勤县|