C 的輸入輸出流 供學習參考

2022-02-10 02:21:28 字數 3202 閱讀 3341

一 .net framework 類庫的system.io 命名空間

system.io 命名空間包含允許讀寫檔案和資料流的型別以及提供基本檔案和目錄支援的型別。

二 c#檔案讀寫之filestream詳解

1. (filestream fs1 = file.open("c:\test.txt", filemode.open));

filemode.open 直接用filestream類開啟檔案c:\test.txt"。

3.(filestream fs3 =file.open("c:\test.txt", filemode.truncate, fileaccess.readwrite)).

filemode.truncate的意思是將檔案開啟清空裡面的內容後再對檔案進行操作。

4. filestream myfilestream1 = new filestream(@"c:testing.txt", filemode.create, fileshare.read);

這個方法的意思是建立乙個可以讀寫的檔案,並且可以允許其他人讀取檔案的內容。

三 c#基於流的輸入輸出

c#基於流的輸入輸出.:stream-通過c# i/o 系統與物理裝置連線起來,也就是平時讀寫的硬碟等物理存貯裝置.流/stream的方法和屬性有:

method/ properties 描述

void close() 關閉流

void flush() 清理流中的內容

int readbyte() 返回乙個整數表示輸入的位元組數,如果沒有資料返回-1

int read(byte[ ] buf,int offset, int numbytes)   將numbytes個位元組讀入到byte[ ]的以offset為,起始位置,返回讀入成功的位元組數

long seek(long offset,seekorigin origin) 將當前位置定位到以origin為初始位置以後的offset處.

void writebyte(byte b) 將單個位元組寫入到乙個輸出流.

void write(byte[ ] buf,int offset, int numbytes) 寫入byte[ ] buf中從offset開始的numbytes個位元組.

bool canread 是否可讀

bool canseek 是否支援定址

bool canwrite 是否可以寫入資料

long length 流的長度

long position 流的當前位置.

流的繼承結構

stream是乙個很大類的,在讀寫檔案的時候,可以通過不同的流進行專業的資料讀寫.

the filemode and fileaccess的幾條規則:

如果在開啟檔案的時候想限制檔案訪問許可權,那麼可以做如下的構造方法:

filestream(string filename, filemode mode, fileaccess access);

檔名       檔案模式       操作模式

access可以是以下當中的乙個值:

fileaccess.read/  fileaccess.write/  fileaccess.readwrite;

filestreamfs=new filestream(「c:\tab.txt」,filemode.openorcreate,fileaccess.read);

c#中結合post傳送的stream與byte array的操作似乎資料很少.下面是兩段**.功能是將同資料夾下的a.jpg複製生成b.jpg.**如下:

bytearray.aspx.cs

using system;

using system.io;

using system.data;

using system.drawing;

using system.drawing.imaging;

using system.net;

namespace barray

private void postimage()

response.write("複製失敗");}}

private static byte cvtimgbarr(system.drawing.image imagetoconvert, imageformat formatofimage)

}catch (exception)

return imarr;}}

}相對來說,byte array在html表單中的應用可能一直被忽視,但是正確的應用byte array可以大大的優化程式,並做出一些意想不到的效果來。

c# stream 和 byte 之間的轉換

///

/// 將 stream 轉成 byte

///

public byte streamtobytes(stream stream)

///

/// 將 byte 轉成 stream

///

public stream bytestostream(byte bytes)

///

/// 將 stream 寫入檔案

///

public void streamtofile(stream stream,string filename)

///

/// 從檔案讀取 stream

///

public stream filetostream(string filename)

另外,xml的乙個應用是序列化,要用到把字串轉化成byte陣列,方法:

byte bytes = system.text.utf8encoding.utf8.getbytes(xmlcontent);

相對的,把byte陣列轉化為字串的方法則為:

string xmlcontent = system.text.utfencoding.utf8.getstring(bytes);

從字串到流stream

byte buffer = system.text.encoding.unicode.getbytes("faint");

memorystream stream = new memorystream(buffer);

memorystream ms = new memorystream(system.text.encoding.default.getbytes(aobjstr));

C 輸入 輸出流

低階i o功能 如無格式的i o 通常指大量的位元組在裝置到記憶體或記憶體到裝置的簡單傳輸。高階i o功能 格式化i o 它將位元組組合成有意義的單元,如資料型別。對於大容量檔案的處理,使用無格式的i o可獲得最佳的效能。不帶引數值成員函式get 從指定的流中讀取乙個字元 即使是空格 並返回該字元作...

C 輸入輸出流

一 c 流的概念 在c 語言中,資料的輸入和輸出 簡寫為i o 包括對標準輸入裝置鍵盤和標準輸 出裝置顯示器 對在外存磁碟上的檔案和對記憶體中指定的字串儲存空間 當然可 用該空間儲存任何資訊 進行輸入輸出這三個方面。對標準輸入裝置和標準輸出設 備的輸入輸出簡稱為標準i o,對在外存磁碟上檔案的輸入輸...

C 輸入 輸出流

一 流低階i o功能 如無格式的i o 通常指大量的位元組在裝置到記憶體或記憶體到裝置的簡單傳輸。高階i o功能 格式化i o 它將位元組組合成有意義的單元,如資料型別。對於大容量檔案的處理,使用無格式的i o可獲得最佳的效能。二 成員函式get和getline 不帶引數值成員函式get 從指定的流...