//標(biāo)準(zhǔn)輸入文件stdin,標(biāo)準(zhǔn)輸出文件stdout,標(biāo)準(zhǔn)錯(cuò)誤輸出文件stderr,分別得到文件描述符 0, 1, 2 //創(chuàng)建、寫入、讀取文件。 //蔡軍生 2007/10/21 QQ:9073204 深圳 void CreateFileDemo(void) { // HANDLE hFile = ::CreateFile(_T("CreateFileDemo.txt"), //創(chuàng)建文件的名稱。 GENERIC_WRITE|GENERIC_READ, // 寫和讀文件。 0, // 不共享讀寫。 NULL, // 缺省安全屬性。 CREATE_ALWAYS, // 如果文件存在,也創(chuàng)建。 FILE_ATTRIBUTE_NORMAL, // 一般的文件。 NULL); // 模板文件為空。 if (hFile == INVALID_HANDLE_VALUE) { // OutputDebugString(_T("CreateFile fail!/r/n")); } //往文件里寫數(shù)據(jù)。 const int BUFSIZE = 4096; char chBuffer[BUFSIZE]; memcpy(chBuffer,"Test",4); DWORD dwWritenSize = 0; BOOL bRet = ::WriteFile(hFile,chBuffer,4,&dwWritenSize,NULL); if (bRet) { // OutputDebugString(_T("WriteFile 寫文件成功/r/n")); } //先把寫文件緩沖區(qū)的數(shù)據(jù)強(qiáng)制寫入磁盤。 FlushFileBuffers(hFile); // //從文件里讀取數(shù)據(jù)。 LONG lDistance = 0; DWORD dwPtr = SetFilePointer(hFile, lDistance, NULL, FILE_BEGIN); if (dwPtr == INVALID_SET_FILE_POINTER) { //獲取出錯(cuò)碼。 DWORD dwError = GetLastError() ; //處理出錯(cuò)。 } DWORD dwReadSize = 0; bRet = ::ReadFile(hFile,chBuffer,4,&dwReadSize,NULL); if (bRet) { // OutputDebugString(_T("ReadFile 讀文件成功/r/n")); } else { //獲取出錯(cuò)碼。 DWORD dwError = GetLastError(); //處理出錯(cuò)。 TCHAR chErrorBuf[1024]; wsprintf(chErrorBuf,_T("GetLastError()=%d/r/n"),dwError); OutputDebugString(chErrorBuf); } } procedure write(str:string); Filestream : integer; begin Filestream := FileCreate(FileName); FileWrite(Filestream ,PCHAR(str)^,length(str)+1); end; procedure writeln(str:string); Filestream : integer; begin Filestream := FileCreate(FileName); FileWrite(Filestream ,PCHAR(str+chr($a))^,length(str)+1); end; 重定向rtl中的Output,然后Writleln就可以向文件輸出了 比如: AssignFile(Output, 'debug.log'); Rewrite(Output); ... Writeln(blahblah); |
|