九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
c#文件操作

在.NET Framework中進(jìn)行的所有的輸入和輸出工作都要使用到流。流是串行化設(shè)備的抽象串行化設(shè)備可以以線性方式存儲數(shù)據(jù),并可以以同樣的方式訪問:一次訪問—個字節(jié)。此設(shè)備可以是磁盤文件、打印機(jī)、內(nèi)存位置和或任何其他支持以線性方式讀寫的對象。

當(dāng)向某些外部目標(biāo)寫數(shù)據(jù)時,就要用到輸出流,這可以是物理磁盤文件、網(wǎng)絡(luò)位置、打印機(jī)或其他程序。

常用的類:

File------實(shí)用類,提供許多靜態(tài)方法,用于移動、刪除、和復(fù)制文件。

Directory------實(shí)用類,提供許多靜態(tài)方法,用于移動、刪除和復(fù)制目錄。

Path------ 實(shí)用類,用于處理路徑名稱。

FileInfo------表示磁盤上的物理文件,具有可以處理此文件的方法,要完成對文件的讀寫工作,就必須創(chuàng)建Stream對像。

DirectoryInfo------表示磁盤上的物理目錄,具有可以處理此目錄的方法

FileStream-------表示可以被寫或被讀,或二者都可的文件,此文件可以同步或異步讀和寫

StreamReader------從流中讀取字符數(shù)據(jù),并可通過使用FileStream被創(chuàng)建為基類。

StreamWriter------向流寫字符數(shù)據(jù),可通過使用FileStream被創(chuàng)建為基類。

FileSystemWatcher---- FileSystemWatcher是用于監(jiān)控文件和目錄,并在這些位置發(fā)生變化時,給出應(yīng)用程序可以捕獲的事件。

◆File和Directory類

作為實(shí)用類,F(xiàn)ile和Directory類都提供了許多方法,用于處理文件系統(tǒng)以及其中的文件和目錄。這些是靜態(tài)方法,涉及移動文件、查詢和更新屬性并創(chuàng)建FileStream對象。

File類一些最常用的靜態(tài)方法:

Copy()------將文件復(fù)制到規(guī)定的位置

Create()------在規(guī)定的恢蒙洗唇ㄎ募?/FONT>

Delete()------刪除文件

Open()-------在規(guī)定的路徑上返回FileStream對像

Move()------將規(guī)定的文件移動到新位置,可以在新位置給文件規(guī)定不同的名字

Directory類的一些常用的靜態(tài)方法

CreateDirectory()------創(chuàng)建具有規(guī)定路徑的目錄

Delete()------刪除規(guī)定的目錄以及其中的所有文件

GetDirectories()------返回表示當(dāng)前目錄之下的目錄的Directory對像的數(shù)組

GetFiles()-------返回在當(dāng)前目錄中的File對像的數(shù)組

Move()------將規(guī)定的目錄移動到新位置??梢栽谛挛恢脼槲募A規(guī)定一個新名稱

FileInfo 類

FileInfo類不像File類,它沒有靜態(tài)方法,僅可用于實(shí)例化的對像。FileInfo對像表示在磁盤或網(wǎng)絡(luò)位置的文件,注意它不是流,為了讀寫文件,必須創(chuàng)建Stream對像。

fileInfo類提供了下面的關(guān)于基礎(chǔ)性的文件的屬性,這些屬性可能用來更新文件。

Attributes-----獲取或設(shè)置當(dāng)前文件的屬性

CreationTime------獲取當(dāng)前文件的創(chuàng)建日期和時間

DirectoryName------獲取文件目錄的路徑

Exists------判斷是否存在文件

FullName------檢索文件的完整路徑

Length------獲取文件的容量

Name------僅僅返回文件的名稱,而不是完整的文件位置路徑、

     當(dāng)在.NET代碼中規(guī)定路徑名時,您可以使用絕對路徑名,也可以使用相對路行名。絕對路徑名顯式地規(guī)定文件或目錄來自于哪—個己知的位置——比如是c:驅(qū)動器。它的—個范例是C:\work\LogFile.txt。注意它淮確地定義了其位置。

  相對路徑名相對于應(yīng)用程序在文件系統(tǒng)上運(yùn)行的位置。通過使用相對路徑名稱,無需規(guī)定已知的驅(qū)動器或位置;當(dāng)前的目錄就是起點(diǎn)。例如,如果應(yīng)用程序運(yùn)行在c:\DeVelopment\FileDemo目錄上(這里的應(yīng)用程序是指代碼生成后的exe文件),并使用了相對路徑“LogFile.txt,”,則該文件就位于C:\DeVelopment\FileDemo\LogFile.txt中。為了上移目錄,則使用.. 字符。這樣,在同一個應(yīng)用程中路徑“../test.txt”是指向應(yīng)用程序所在的目錄的上一級目錄里的文件test.txt。

◆FileStream對象

FileStream對象表示在磁盤或網(wǎng)絡(luò)路徑上指向文件的流。當(dāng)類提供向文件讀寫字節(jié)的方法時,經(jīng)常使用StreamReader或StreamWriter執(zhí)行這些功能。這是因?yàn)镕ileStream類操作字節(jié)和字節(jié)數(shù)組,而Stream類操作字符數(shù)據(jù)。字符數(shù)據(jù)易于使用,但是有些操作比如隨機(jī)文件訪問,就必須由FileStream對象執(zhí)行。

FileStream對象的構(gòu)造函數(shù):

FileStream aFile = new FileStream(“Log.txt”,FileMode.OpenOrCreate);

FileMode枚舉具有幾種成員:

Append------如果文件存在,就打開文件,將文件位置移動到文件的末尾,并創(chuàng)建一個新文件。FileMode.Append僅可以與枚舉FileAccess.Write聯(lián)合使用

Create------創(chuàng)建新文件;如果存在這樣的文件,就破壞它。

CreateNew------創(chuàng)建新文件,但是如果已經(jīng)存在此文件,則拋出異常

Open------打開現(xiàn)有的文件,但是不存在所指定的文件,則拋出異常

OpenOrCreate------如果文件存在,則規(guī)定打開文件,否則就創(chuàng)建新文件,如果文件已經(jīng)存在,則保留在文件中的數(shù)據(jù)

Truncate------打開現(xiàn)有文件,清除其內(nèi)容,然后我們可以向文件寫入全新的數(shù)據(jù),但是保留文件的初始創(chuàng)建日期,必須存在有文件,否則就拋出異常

訪問級別

 前面的構(gòu)造函數(shù)默認(rèn)以只讀模式打開文件,需要一個附加參數(shù)規(guī)定不同的訪問級別,此參數(shù)是FileAccess參數(shù)。

FileStream aFile=new FileStream(”Log.txt”,fileMode.OpenOrCreate,FileAccess.Write)

      FileAccess枚舉有三種類型:Read、Write、ReadWrite.此屬性的作用是:基于用戶的身份驗(yàn)證級別改變用戶對文件的訪問

 讀取文件的位置用seek:public long Seek(long offset,SeekOrigin origin)

Long offset是規(guī)定文件指針以字節(jié)為單位的移動距離;SeekOrigin origin是規(guī)定開始計算的起始位置,此枚舉包含3個值:Begin,Current和End。

   例:aFile.Seek(8,SeekOrigin.Begin);// SeekOrigin.Begin指得是文件指針從文件的第一個字節(jié)起;而參數(shù)‘8‘指得是移動到文件的第8個字節(jié)

   例2:afile.Seek(2,SeekOrigin.Current)//在當(dāng)前位置開始,再移動2個字節(jié)。

   例3:aFile.Seek(-5,SeekOrigin.End)//在文件末端位置開始,倒數(shù)5個字節(jié)。


   讀取數(shù)據(jù)

使用FileStream類讀取數(shù)據(jù)不像使用StreamReader和StreamWriter類讀取數(shù)據(jù)那么容易,這是因?yàn)镕ileStream類只能處理原始字節(jié)(raw byey),這使得FileStream類可以用于任何數(shù)據(jù)文件,而不僅僅是文本文件,通過讀取字節(jié)數(shù)據(jù)就可以讀取類似圖像和聲音的文件。這種靈活性的代價是不能使用它直接讀入字符串,而使用StreamWriter和StreaMeader類卻可以這樣處理,從是有幾種轉(zhuǎn)換類可以很容易地將字節(jié)數(shù)組轉(zhuǎn)換為字符數(shù)組,或者進(jìn)行相反的操作。

Read()方法是從FileStream對象所指向的文件訪問數(shù)據(jù)的主要手段:

Public int Read(byte[] array,int offset, int count)//第一個參數(shù)是被傳輸進(jìn)來的字節(jié)數(shù)組,用以接受FileStream對象中的數(shù)據(jù)。第二個參數(shù)是字節(jié)數(shù)組中開始寫入數(shù)據(jù)的位置,它通常是0,表示從數(shù)組的開端的文件中向數(shù)組寫數(shù)據(jù),最后一個參數(shù)是規(guī)定從文件中讀出多少字節(jié)。

寫入數(shù)據(jù)

寫入數(shù)據(jù)的流程是先獲取字節(jié)數(shù)組,再把字節(jié)數(shù)據(jù)轉(zhuǎn)換為字符數(shù)組,然后把這個字符數(shù)組用Write()方法寫入到文件中,當(dāng)然在寫入的過程中,可以確定在文件的什么位置寫入,寫多少字符等等。

文件讀寫的范例:


讀取文件
 using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace myFile
{
     class Program
     {
         static void Main(string[] args)
         {
             byte[] byData = new byte[100];//建立一個FileStream要用的字節(jié)組
             char[] charData = new char[100];//建立一個字符組

             try
             {
                 FileStream aFile = new FileStream("../../../../Data.txt", FileMode.Open);//實(shí)例化一個FileStream對象,用來操作data.txt文件,操作類型是
                
                 aFile.Seek(55, SeekOrigin.Begin);//把文件指針指向,從文件開始位置向前55位字節(jié)所指的字節(jié)
                 aFile.Read(byData, 0, 100);//讀取FileStream對象所指的文件到字節(jié)數(shù)組里
             }
             catch (IOException e)
             {
                 Console.WriteLine("close");
                 return;
             }
             Decoder d = Encoding.UTF8.GetDecoder();//
             d.GetChars(byData, 0, byData.Length, charData, 0);//將編碼字節(jié)數(shù)組轉(zhuǎn)換為字符數(shù)組

             Console.WriteLine(charData);
             Console.ReadLine();
             return;
         }
     }
}

寫入文件:


using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace myFile
{
     class Program
     {
         static void Main(string[] args)
         {
             byte[] byData = new byte[100];//建立一個FileStream要用的字節(jié)組
             char[] charData = new char[100];//建立一個字符組

             try
             {
                 FileStream aFile = new FileStream("../../../../Data.txt", FileMode.Open);//實(shí)例化一個FileStream對象,用來操作data.txt文件,操作類型是
               
                 charData = "我是誰?111?".ToCharArray();//將字符串內(nèi)的字符復(fù)制到字符組里
                 aFile.Seek(0, SeekOrigin.End);
                 Encoder el = Encoding.UTF8.GetEncoder();//編碼器
                 el.GetBytes(charData, 0, charData.Length, byData, 0, true);

                 aFile.Write(byData, 0, byData.Length);
             }
             catch (IOException e)
             {
                 Console.WriteLine("close");
                 return;
             }
           
         }
     }
}

  
◆StreamWriter對像

用FileWriter來隨機(jī)讀取文件是個好主意,而用StreamWriter可以直接把字符串寫入文件中,它處理重要的轉(zhuǎn)換和向FileStream對像寫入工作。創(chuàng)建StreamWriter有很多方法:

FileStream aFile = new FileStream(“Log.txt”,FileMode.CreatcNew);

StreamWriter sw = new StreamWriter(aFile);

也可直接從文件中創(chuàng)建StreamWriter對象:

  StreamWriter sw = new StreamWriter(“Log.txt”,true);

     后面這個Boolean值規(guī)定是附加文件還是創(chuàng)建新文件,如果此值為false,則就創(chuàng)建一個新文件,或者截取現(xiàn)有文件并打開它。如果此值設(shè)置為true,則打開文件,保留原來的數(shù)據(jù),如果找不到文件,則創(chuàng)建一個新文件。注意:當(dāng)創(chuàng)建FileStream對象時,您無法得到選項的范圍。除了使用Boolean值附加或創(chuàng)建新文件外,我們根本就無法像使用FileStream類時那樣規(guī)定FileMode屬性;而且,您也無法設(shè)置FileAccess屬性.因此您總是具有對文件的讀寫特權(quán),為了使用任何高級參數(shù),您必須在FileStream構(gòu)造函數(shù)中規(guī)定這些參數(shù),然后在FileStream對象中創(chuàng)建StreamWriter。


例:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace StreamWriterFile
{
     class Program
     {
         static void Main(string[] args)
         {
             try
             {
                 FileStream aFile = new FileStream("data1.txt", FileMode.OpenOrCreate);//建立一個fileStream對象
                 StreamWriter sw = new StreamWriter(aFile);//用FileStream對像實(shí)例一個StreamWriter對象
               
                 sw.Write("first.");
                 sw.WriteLine("hello world!!!");//寫入字符串,方法WriteLine寫入時后面跟一個換行符
                 sw.Write("This is a");//寫入字符串,方法Write寫入時沒有換行符
                 sw.Write("string of characters.");
                 sw.Close();//用完后必須關(guān)閉對像
             }
             catch (IOException e)
             {
                 Console.WriteLine(e.ToString());
             }
         }
     }
}

  
◆StreamReader對象

1.讀取文件

輸入流用于從外部源讀取數(shù)據(jù),在很多情況下,數(shù)據(jù)源可以是磁盤上的文件或網(wǎng)絡(luò)的某些位置,任何可能發(fā)送數(shù)據(jù)的位置都可以是數(shù)據(jù)源,比如網(wǎng)絡(luò)應(yīng)用程序,web服務(wù),甚至是控制臺。StreamReader是一個通用類,可以用于任何流;StreamReader對象的創(chuàng)建方式非常類似于StreamWriter對象的創(chuàng)建方式。

StreamWriter類有兩個基本的方法read和readLine

Read()方法將流的下一個字符作為正整數(shù)值返回,如果到達(dá)了流的結(jié)尾處,則返回-1

ReadLing()方法是讀取并返回一行字符,如果返回為空,那么就是到達(dá)了流的結(jié)尾。

ReadEnd()方法讀小文件最好,它直接讀取完整的文件并作為字符串返回。


例:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace StreamReaderTest
{
     class Program
     {
        
         static void Main(string[] args)
         {
             string strLine;
             try
             {
                 Console.Write("請輸入文件路徑及文件名:");
                 string mess = Console.ReadLine();
                 FileStream aFile = new FileStream(mess, FileMode.Open);
                 StreamReader sr = new StreamReader(aFile);//用FileStream對象實(shí)例化一個StreamReader對象
                 //strLine = sr.ReadToEnd();//讀取完整的文件,如果用這個方法,就可以不用下面的while循環(huán)
                 strLine = sr.ReadLine();//   讀取一行字符并返回
                 while (strLine != null)
                 {
                     Console.WriteLine(strLine);
                     strLine = sr.ReadLine();
                 }
                 sr.Close();
                 Console.ReadLine();
             }
             catch (IOException e)
             {
                 Console.WriteLine("an IOexception has been thrown!");
                 Console.WriteLine(e.ToString());
                 return;
             }
             return;
         }
     }
}

  
2.分隔文件

讀取使用逗號分隔的文件,string類提供了一種稱為Split()的方法,可以用于將字符串按照提供的分隔符分隔成字符組.


例:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace CommaValues
{
     class Program
     {
         static void Main(string[] args)
         {
             while (true)
             {
                 string strLine;
                 string[] strArray;
                 char[] charArray = new Char[] { ‘,‘ };
                 Console.Write("請輸入文件內(nèi)容以逗號分隔的文件路徑及文件名:");
                 string name = Console.ReadLine();

                 try
                 {
                     FileStream aFile = new FileStream(name, FileMode.Open);
                     StreamReader sr = new StreamReader(aFile);

                     strLine = sr.ReadLine();
                     while (strLine != null)
                     {
                         strArray = strLine.Split(charArray);
                         for (int x = 0; x <= strArray.GetUpperBound(0); x++)
                         {
                             Console.WriteLine(strArray[x].Trim());
                         }
                         strLine = sr.ReadLine();
                     }
                     sr.Close();
                     //Console.ReadLine();
                 }
                 catch (IOException e)
                 {
                     Console.WriteLine(e.ToString());
                     return;
                 }
                 //return;
             }
         }
     }
}

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
c#FileStream文件讀寫(轉(zhuǎn))
C#IO流詳解轉(zhuǎn)載
Unity3D中C#使用StreamReader類讀取文件 | Unity3D教程手冊
C#讀寫txt文件的兩種方法介紹
c#文件讀寫相關(guān)類介紹
C# byte及char FileStream 與StreamReader的區(qū)別
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服