C#檔案流
——FileStream
FileSream操作的是位元組陣列,所以FileStream可以用來操作任何型別的檔案
使用FileStream讀寫資料的步驟
- 建立FileStream例項物件
- 建立位元組陣列來限定每次讀取資料的大小
- 執行讀取資料操作,
- 對位元組陣列進行解碼/編碼操作
- 關閉流
- 釋放流所佔用的資源
string [email protected]"C:\Users\SpringRain\Desktop\new.txt";
FileStream stream = new FileStream(path,FileMode.OpenOrCreate, FileAccess.Read );
byte[] Buffer = new byte[1024 * 1024 * 5];
int R = stream.Read(Buffer, 0, Buffer.Length);
string str = Encoding.UTF8.GetString(buffer,0, r);
stream.Close();
stream.Dispose();
注意
- FileStream建構函式常用的三個引數
- 引數1——路徑
- 引數2——列舉型別FileMode指定系統開啟檔案的方式(常用Append,OpenOrCreate)
- 引數3——列舉型別FileAccess,指明對檔案中的資料操作(write,read)
- 建立的位元組陣列的作用
- 這個位元組陣列是用於儲存讀取出來的資料的,我們提前定義了數值大小,則陣列中只能存那麼多值這樣就起到了限定的作用
- 在執行讀取操作,往位元組陣列中填寫資料的時候
- 如果讀取出來的資料大小不夠填充位元組陣列的大小,系統會用空格填充,但是可以在解碼的時候可以指定擷取位元組陣列中多少資料,用該步驟的返回值確定,該步驟返回一個int型別的值,表示讀取到的實際位元組的長度
- 引數1——用於存資料的位元組陣列
- 引數2——重讀取檔案的哪裡開始讀取
- 引數3——在檔案中讀取資料到哪個位置
- 對位元組陣列進行解碼操作
- 引數1——解碼的位元組陣列
- 引數2——開始解碼位置
- 引數3——結束解碼位置,其餘的扔掉
上面的過程需要我手動的釋放資源,微軟也考慮到了這一點比較麻煩,所以提供了一種寫法幫助我們自動釋放資源,上面的過程就可以寫成下面這樣子
string path=@"C:\Users\SpringRain\Desktop\new.txt";
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) {
byte[] Buffer = new byte[1024 * 1024 * 5];
int R=stream.Read(Buffer,0,Buffer.Length);
string str=System.Text.Encoding.UTF8.GetString(Buffer,0,R);
}
//Using會幫助我們自動釋放資源
當然往一個檔案中寫入資料也是這樣的,只需要改一點點引數就好了
string [email protected]"C:\Users\SpringRain\Desktop\new.txt";
using (FileStream fsWrite = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
{
string str = "Hello world";
byte[] buffer = Encoding.UTF8.GetBytes(str);
fsWrite.Write(buffer, 0, buffer.Length);
}
//這樣王檔案中寫入資料的話會覆蓋原有的資料,如果想往原來的檔案中新增資料,就把FileMode.OpenOrCreate改為FileMode.Append
下面一個例子用讀取和寫入來實現多媒體檔案的複製
using (FileStream fRead = new FileStream(soucre, FileMode.Open, FileAccess.Read)) {
using (FileStream fWrite = new FileStream(target, FileMode.Create, FileAccess.Write)) {
byte[] buffer = new byte[1024 * 1024 * 5];
while (true) {
int r = fRead.Read(buffer, 0, buffer.Length);
if (r == 0) break;
fWrite.Write(buffer, 0, r);
}
}
}
//我們建立一個負責讀取的流
//建立一個負責寫入的流
//因為檔案可能會比較大,所以我們在讀取的時候 應該通過一個迴圈去讀取
//返回本次讀取實際讀取到的位元組數
//如果返回一個0,也就意味什麼都沒有讀取到,讀取完了
——StreamReader
有時候我們只需要以流的方式讀取文字資料,那麼除了使用FileStream之外,還有一個更簡單的方式——StramReader
string path = @"C:\Users\Blue\Desktop\專案站點.txt";
using (StreamReader sr = new StreamReader(path,Encoding.Default)) {
while (!sr.EndOfStream) {
Console.WriteLine(sr.ReadLine());
}
}
//StreamReader物件的EndOfStream屬性是用來判斷是否讀取完了指定的檔案
——StraemWriter
以流的方式寫入文字資料
using (StreamWriter sw=new StreamWriter(path,true)){
sw.Write("I am Appended");
};
//如果省掉第二個bool引數,則會覆蓋原文內容,第二引數表示是否為append
相關推薦
【C/C++開發】C++檔案流關於seekg失效的問題
關於seekg失效的問題 當file.eof()=1的時候seekg就不好用了,當file.eof()=0的時候seekg是好用的。也就是說當一個檔案讀到尾部以後,不能再用seekg來移動或者定位了。通過建立該檔案新的物件能解決這個問題。 如果只是輸出的話可以用streambuf的rdb
C/C++檔案流的示例
準備三個檔案1.txt 2.txt 3.txt #include <iostream> #include <fstream> #include <string> #include <vector> using nam
C++檔案流操作
讀取檔案 假如需要按行讀取下列檔案,並且分別通過不同變數讀取路徑以及數字,則可以通過C++流操作 /home/ubuntu/demo.jpg 1 /home/ubuntu/result.jpg 0
C++ /檔案流 /BMP檔案讀寫
把一個字元寫到輸出流中:cout.put('c'); // 輸出一個字元 cout<<'c'; // 輸出一個字元,但是此前設定的寬度和填充方式在此起作用 write 函式: 把記憶體中的一塊兒內容寫到一個輸出檔案中,該函式有兩個引數:一個char指標(指向記憶體資料的起始地址)和一個所寫位元組數
C++檔案流式讀寫
在看C++程式設計思想中,每個練習基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含義,在看了幾位大牛的博文後,進行整理和總結: 這裡主要是討論fstream的內容: [java] view plain copy print
Visual Studio 2008 、 Windows 環境變數介紹和c++檔案流中檔案路徑
Visual Studio 2008 和 Windows 環境變數對設定 相對路徑很重要,這樣便於程式碼的移植,即使換一臺計算機,程式碼不用更改配置,直接就能用。 可以在專案的“工具”“屬性頁”對話方塊中任何接受字串的位置使用這些巨集。這些巨集不區分大小寫。
c++檔案流基本用法(fstream, ifstream, ostream)
前言:c++的檔案流處理其實很簡單,前提是你能夠理解它。檔案流本質是利用了一個buffer中間層。有點類似標準輸出和標準輸入一樣。 c++ IO的設計保證IO效率,同時又兼顧封裝性和易用性。本文將會講述c++檔案流的用法。 有錯誤和疏漏的地方,歡迎批評指證。 需要包含的標頭檔
c++檔案流基本用法(fstream, ifstream)
c++的檔案流處理其實很簡單,前提是你能夠理解它。檔案流本質是利用了一個buffer中間層。有點類似標準輸出和標準輸入一樣。c++ IO的設計保證IO效率,同時又兼顧封裝性和易用性。本文將會講述c++檔案流的用法。有錯誤和疏漏的地方,歡迎批評指證。需要包含的標頭檔案: <
C++ 檔案流fstream的過載
#include<fstream> #include<iostream> using namespace std; //////////////////////////////////////////////// class PhoneNumbe
c++檔案流的基本操作
在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O,stream這個類有兩個重要的運算子: 1、插入器(<<) 向流輸出資料。比如說系統有一個預設的標準輸出流(cout),一般情況下就是指的顯示器,所以,cout<<"WriteSt
C 檔案流
1 C檔案操作 在ANSI C中,對檔案的操作分為兩種方式,即: ü 流式檔案操作 ü I/O檔案操作 1.1 流式檔案操作 這種方式的檔案操作有一個重要的結構FILE,FILE在stdio.h中定義如下: 以下是引用片段: typedef stru
使用C++檔案流庫fstream,讀寫操作十六進位制文字檔案
最近為智慧移動小車編寫上位機軟體的過程中,遇到了檔案讀寫處理的任務,檔案是一般的文字檔案.txt格式的,其內容由十六進位制資料組成。檔案內資料的格式如下: FF FD 03 FD 77 FE 77 1C 27 FF FD 01 FE 00 FE 00 1E 28 FF FE
C++ 檔案流處理
包含於#include<stdio.h> 的FILE 類:fread和feof // 讀取檔案塊資料 size_t fread(void *buffer, size_t size, size_t count, FILE *file); fread引數說明:bu
C++ 檔案流、字串流、字元陣列、字串
在開講之前,先給大家看下面這段C++程式碼。 // definition of function read_file // // return the file's data in string string read_file( string file_name = "t
C++檔案流狀態的判別與定位
》檔案流狀態的判別 可以用檔案流物件的下列成員函式來判別檔案流的當前狀態: # is_open():判定流物件是否與一個開啟的檔案相聯絡,若是,返回true,否則返回false # good():剛進行的操作成功時返回true
C#檔案流
——FileStream FileSream操作的是位元組陣列,所以FileStream可以用來操作任何型別的檔案 使用FileStream讀寫資料的步驟 建立FileStream例項物件 建立位元組陣列來限定每次讀取資料的大小 執行讀取資料操作, 對位
c++ 檔案流
檔案操作:FILE* buffer = fopen("filename",mode); fopen_s() FILE* 檔名: "BusInfo.dat" 開啟方式:1.文字模式: r 開啟只
C檔案流
流式檔案操作 這種方式的檔案操作有一個重要的結構FILE,FILE在stdio.h中定義如下: 以下是引用片段: typedef struct { int level; unsigned flags; char fd; unsigned char hold; int
C#檔案流寫入結構體
1、定義結構體 namespace WindowsFormsApplication1 { [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct fsnHead
C++ 學習筆記之——檔案操作和檔案流
1. 檔案的概念 對於使用者來說,常用到的檔案有兩大類:程式檔案和資料檔案。而根據檔案中資料的組織方式,則可以將檔案分為 ASCII 檔案和二進位制檔案。 ASCII 檔案,又稱字元檔案或者文字檔案,它的每一個位元組放一個 ASCII 程式碼,代表一個字元。 二進位制檔案,又稱內部格式檔案或位元