1. 程式人生 > >C#實現stream讀寫檔案

C#實現stream讀寫檔案

 讀寫檔案在實際運用中比較多的,自己總結記下了,方便複用,給大家參考下

第一種方式:

   /// <summary>
        /// 寫檔案
        /// </summary>
        /// <param name="path">儲存路徑</param>
        /// <param name="message">內容</param>
        /// <param name="append">是否追加還是覆蓋</param>
        public static void WriterFile(string path,string message,bool append) {
            using (StreamWriter swtrain = new StreamWriter(path, append, Encoding.UTF8))
            {            
                    swtrain.WriteLine(message);            
            }
        }
       /// <summary>
     /// 讀取檔案
     /// </summary>
     /// <param name="path"></param>
        public static void ReadFile(string path) {
            using (StreamReader sr = new StreamReader(path, Encoding.UTF8))
            {
                string line;
                while ((line = sr.ReadLine()) != null)//讀取每一行資料
                {
                    Console.WriteLine(line.ToString());
                }
            }           
        }    

第二種方式:


        /// <summary>
        /// 寫入檔案
        /// </summary>
        /// <param name="path">路徑</param>
        /// <param name="message">資訊</param>
        public static void stream2File(string path,string  message)
        {
            byte [] buffer=Encoding.UTF8.GetBytes(message);
            bytetTostream(buffer);
             FileStream fs = new FileStream(path, FileMode.Create);
            BinaryWriter writer = new BinaryWriter(fs);
            writer.Write(buffer);
            writer.Close();
            fs.Close();
        }
        /// <summary>
        /// 讀取檔案
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static void file2Stream(string path)
        {
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            byte[] buffer=stream2byte(fs);
            Stream stream = new MemoryStream(buffer);
            stream.Seek(0, SeekOrigin.Begin);
            StreamReader sr = new StreamReader(stream);
            string line;
            while ((line = sr.ReadLine()) != null)//讀取每一行資料
            {
                Console.WriteLine(line.ToString());
            }
        }
        /// <summary>
        /// stream 轉為byte[]
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static byte[] stream2byte(Stream stream)
        {
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, buffer.Length);
            return buffer;
        }
        /// <summary>
        /// byte[] 轉stream
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static Stream bytetTostream(byte[] buffer)
        {
            Stream stream = new MemoryStream(buffer);
            stream.Seek(0, SeekOrigin.Begin);
            //設定stream的position為流的開始
            return stream;
        }

一看就知道第一種方式比較好,程式碼量少,簡潔。寫第二種作為參考,它們都是繼承stream,

相關推薦

C#實現stream檔案

 讀寫檔案在實際運用中比較多的,自己總結記下了,方便複用,給大家參考下 第一種方式: /// <summary> /// 寫檔案 /// </summary> /// <param nam

c# 記憶體對映檔案

.NET中使用MemoryMappedFile解決記憶體對映問題。使用起來很方便。但是不得不說,該方法應用場景確實沒有多少。或者根本不需要。c#已經提供了很多寫檔案的類和方法。我都感覺很重複和混亂了。   不多說,我用MemoryMappedFile寫了個demo,來進行檔

C++利用fstream檔案

/* C++的ifstream和ofstream 讀檔案寫檔案操作 */ #include <iostream> #include <string> #include <fstream> using namespace std; in

C/C++ 二進位制 追加檔案

#include <stdio.h> //標準輸入輸入出的標頭檔案,printf和scanf都在這裡了 #include <stdlib.h> //標準庫標頭檔案,記憶體分配

C#中 XML 檔案的方法(xmlreader,xmlwriter)

class Test     {         public static void Main(string[] args)         {             string path = "d:\\books.xml";                         XmlReader read

Python學習筆記系列——檔案以及敏感詞過濾器的實現

一、讀檔案 #開啟檔案,傳入檔名和識別符號,r代表讀 f= open('\\Users\ZC\Desktop\zc.txt','r') #呼叫read方法一次性讀取檔案的全部內容,存入記憶體,用str物件表示 print(f.read()) f.close() #使用with無論程式是否

C# & JAVA:檔案

using System; using System.IO; using System.Text; namespace ConsoleApplication4 { class Program { public static void Read(string path) { FileS

C++利用一個fstream流檔案

原文地址:https://blog.csdn.net/qq_34176290/article/details/80260377 fstream物件可以同時具有ifstream和ofstream的功能,嘗試使用一個流對檔案進行讀寫的程式碼如下:

c++ premier Plus書--C++列舉和switch, cin/cout/檔案

C++中switch和列舉結合使用: #include "iostream" using namespace std; // 建立一個列舉型別常量, 實際對應的是0~2 enum {red, orange, yellow}; int main() { cout << "Ente

C語言以資料塊的形式檔案

C語言以資料塊的形式讀寫檔案 fgets() 有侷限性,每次最多隻能從檔案中讀取一行內容,因為 fgets 遇到換行符就結束讀取。如果希望讀取多行內容,需要使用 fread 函式;相應地寫入函式為 fwrite。 fread() 函式用來從指定檔案中讀取塊資料。所謂塊資料,也就是若干個位

C語言以字串的形式檔案

C語言以字串的形式讀寫檔案 fgetc() 和 fputc() 函式每次只能讀寫一個字元,速度較慢;實際開發中往往是每次讀寫一個字串或者一個數據塊,這樣能明顯提高效率。 讀字串函式fgets fgets() 函式用來從指定的檔案中讀取一個字串,並儲存到字元陣列中,它的原型為: c

C#檔案的所有方法總結

計算機在最初只支援ASCII編碼,但是後來為了支援其他語言中的字元(比如漢字)以及一些特殊字元(比如€),就引入了Unicode字符集。基於Unicode字符集的編碼方式有很多,比如UTF-7、UTF-8、Unicode以及UTF-32。在Windows作業系統中,一個文字檔案的前幾個位元組

C語言-檔案I/O

C語言讀寫檔案的步驟一般是: 建立或開啟檔案 > 讀或寫檔案 > 關閉檔案 當然讀或寫的過程中還可以通過操作當前檔案偏移量來控制讀寫位置。 下面分別介紹這些函式。 標頭檔案: #include <fcntl.h> //此標頭檔案定義了以下oflag O_RDO

c/c++ /檔案

利用c++的stream類 標頭檔案:#include <fstream> 1.讀檔案 string strRes; string strPath = “/opt/test/test.txt”; if (access(strPath .c_str(),

C#常用IO流與檔案

1.檔案系統 (1)檔案系統類的介紹     檔案操作類大都在System.IO名稱空間裡。FileSystemInfo類是任何檔案系統類的基類;FileInfo與File表示檔案系統中的檔案;DirectoryInfo與Directory表示檔案系統中的資料夾;Path表

C#檔案宜取方式.md

C#讀寫檔案宜取方式 首先,不推薦用如下方式讀寫 //讀 using (FileStream fs = File.OpenRead(filePath)) { byte[] b = new byt

C語言二進位制方式檔案資料

fwrite(buffer, size, count,fp):以二進位制的形式向指定的檔案中寫入若干資料項(由count決定),返回實際寫入的資料項數目,各引數含義如下: buffer:一個儲存區的起始地址,以該地址開始的儲存區的資料即是儲存到檔案中的資料,可以是陣列或指標型別; siz

c++中使用fstream檔案

c++中封裝的類庫ofsream,ifstream用於檔案的讀寫操作; (1)ofstream–用於從流中寫入檔案; //建立並寫入檔案,以寫檔案方式開啟檔案 ofstream TempOut("Test_327.txt"); int niNum = 100

C語言-自我學習-檔案

人懶要多記筆記 C語言讀寫檔案 End Of File,在電腦的術語縮寫通常為 EOF,在作業系統決定資料源無更多的資料可讀取。資料源通常稱為檔案或串流。 關鍵物件 fopen ->應該是指向Fileopen物件 fprintf ->應該

使用共享記憶體實現一個程序檔案,兩個程序檔案

主要功能:讀取任意的檔案,大小不限(不超過共享記憶體設定的大小,一般為8k,但可手動重新設定,這已經很大了。),執行後兩個或多個讀程序可同時讀取該檔案並在終端列印。 要實現該功能,首先你得了解共享記憶體的搭建,有四個函式,分別為shmget,shmat,shmdt,shmc