一:寫文件
1 建立文件並寫入內容
[cpp]view plain
copy
cstring filepath=l
"c:\\unicode.txt"
; cstdiofile wfile;
if(!wfile.open(filepath,cfile::modecreate|cfile::modewrite|cfile::typebinary))
word
sign=0xfeff;
// unicode文件 標誌
wfile.write(&sign,2);
cstring filecontent;
filecontent=l"unicode文件"
; wfile.write(filecontent.getbuffer(),filecontent.getlength()*2);
filecontent.releasebuffer();
wfile.close();
[cpp]view plain
copy
word
sign=0xfeff;
wfile.write(&sign,2);
//遍歷list容器 寫入檔案
list::iterator it=filelist.begin();
for(it=filelist.begin();it!=filelist.end();it++)
wfile.close();
2 判斷文件是否存在,若存在,則在文件末尾新增內容,若不存在,重新建立
[cpp]view plain
copy
cstring filepath=l
"c:\\test.txt"
; cstdiofile wfile;
cfilefind filefind;
if(!filefind.findfile(filepath)
// 查詢檔案是否存在
else
if(!wfile.open(filepath,cfile::modewrite|cfile::modenotruncate|cfile::typebinary))
return
; word
sign;
wfile.seektobegin();
wfile.read(&sign,2);
if(sign!=0xfeff)
wfile.seektoend();
cstring str=l"新增到文件末尾"
; wfile.write(str.getbuffer(),str.getlength()*2);
str.releasebuffer();
wfile.close();
二 讀文件:
1 使用read函式 讀取文件 ,並將讀取到的內容轉換為cstring 以方便處理
[cpp]view plain
copy
cstring filepath;
cstdiofile wfile;
filepath=l"c:\\test.txt"
; if
(!wfile.open(filepath,cfile::moderead|cfile::typebinary))
ulonglong
len=wfile.getlength();
byte *pbyte=null;
if(len>0)
else
}else
cstring buf=(wchar
*)pbyte;
// 將陣列轉換為 cstring型別
wfile.close();
// 其他操作
//...
//delete
pbyte;
// 釋放資源
2 使用 readstring 讀取一行文字
virtual lptstr readstring(lptstr
lpsz,uint
nmax);virtual bool readstring(
cstring&
rstring);
// 讀取到換行符\n為止,且讀取的字元少於nmax-1時,將換行符 \n 儲存到緩衝區中
注意:
the cstring version of this function removes the'\n'
if present; the lptstr version does not.
readstring(cstring & rstring) 中, rstring 為: 一行文字+結尾符
但結尾是 回車符 '\r' 而不是'\r\n'
因此,若想得到這一行資料,還必須將結尾符去掉方可。
示例:[cpp]view plain
copy
word
sign;
readfile.seektobegin();
readfile.read(&sign,2);
if(sign!=0xfeff)
else
} 乙個綜合例子:
[cpp]view plain
copy
cfiledialog dlg(
true,
_t("*"
),
_t("*.txt"
),
ofn_filemustexist|ofn_hidereadonly|ofn_allowmultiselect,
_t("all files(*.txt|*.txt||)"
)
);
tchar
szbuffer[1024];
szbuffer[0]=0;
dlg.m_ofn.lpstrfile = szbuffer;
dlg.m_ofn.nmaxfile = 1024;
if(idok==dlg.domodal())
ulonglong
len=wfile.getlength();
cstring strtxt;
byte *pbyte=null;
if(len>0)
else
} cstring buf=(wchar
*)pbyte;
wfile.close();
if(!wfile.open(filepath,cfile::modereadwrite|cfile::typebinary|cfile::modecreate))
wfile.seektobegin();
word
sign=0xfeff;
wfile.write(&sign,2);
wfile.write(buf.getbuffer(),buf.getlength()*2);
wfile.close();
delete
pbyte;
}
}
**:
自己遇到的小問題:
1. 字串不能太長,太長可能會導致字串錯誤
2. 在vs下處理的時候最好都用_t使其支援unicode
使用CStdioFile讀寫檔案
cstdiofile類的宣告儲存在afx.h標頭檔案中。cstdiofile類繼承自cfile類,cstdiofile物件表示乙個用執行時的函式fopen開啟的c執行時的流式檔案。流式檔案是被緩衝的,而且可以以文字方式 預設 或者二進位制方式開啟。cstdiofile類不支援cfile類中的dupl...
使用CStdioFile操作檔案
檔案操作在vc程式設計中使用非常普遍,直接使用cfile對檔案進行操作比較繁瑣,使用繼承自cfile的cstdiofile類就要容易得多,用cstdiofile 來處理字串,是最簡單最好理解的的辦法。本文整理了網上大家使用的各種cstdiofile的操作方法,歸納如下 1.開啟檔案 file.ope...
微控制器控制U盤 微控制器讀寫U盤 高速U盤讀寫模組
微控制器讀寫u盤的模組 usb118 不用電腦也能讀寫u盤中的檔案!型 號 usb118ad usb118a 簡 介 目前,基於usb2.0介面的移動儲存裝置已經被廣泛使用,尤其是採用usb flash技術的u盤產品的容量由幾年前的16m增加到現在的4g以上。我們知道,u盤通常是作為計算機的外部儲存...