win32文件读写demo
生活随笔
收集整理的這篇文章主要介紹了
win32文件读写demo
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
新建一個控制臺工程;代碼;
// file.cpp : Defines the entry point for the console application. //#include "stdafx.h" #include <windows.h> #include <tchar.h> #include <stdio.h>HANDLE hOutput;void perro(LPTSTR pszTitle){LPVOID pvErrMsg = NULL;DWORD nError = GetLastError();FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,NULL, nError,MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED),(LPTSTR)&pvErrMsg,0, NULL);TCHAR szText[256];HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);wsprintf(szText, "%s(errno=%d):%s\n", pszTitle, nError, (LPTSTR)pvErrMsg);WriteConsole(hOutput, szText, wcslen(szText), NULL, NULL);WriteConsole(hOutput, szText, 50, NULL, NULL);LocalFree(pvErrMsg); }void Create() {HANDLE hFile = CreateFile(_T("Y:/file.txt"), GENERIC_WRITE,FILE_SHARE_READ, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);CloseHandle(hFile); } void Write() {HANDLE hFile = CreateFile(_T("Y:/file.txt"), GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);// 1 多字節字符集CHAR szText[] = "hello win32 file";DWORD nLen = 0;WriteFile(hFile, szText, strlen(szText), &nLen, NULL);printf("準備寫入:%d,實際寫入:%d\n",strlen(szText), nLen);// 2 Unicode字符集//TCHAR szText[] = _T("hello file");//DWORD nLen = 0;//WriteFile(hFile, szText, wcslen(szText)*sizeof(szText[0]), &nLen, NULL);//TCHAR pszText[256] = { 0 };//wsprintf(pszText, _T("準備寫入:%d,實際寫入:%d\n"), wcslen(szText), nLen);//WriteConsole(hOutput, pszText, wcslen(pszText), NULL, NULL);CloseHandle(hFile); } void Read() {HANDLE hFile = CreateFile(_T("y:/file.txt"),GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL);DWORD nHight = 0;DWORD nLow = GetFileSize(hFile, &nHight);DWORD nLen = 0;// 1 多字節字符集//CHAR szText[256] = { 0 };//ReadFile(hFile, szText, nLow, &nLen, NULL);//printf("數據:%s,準備讀取:%d,實際讀取:%d\n",szText, nLow, nLen);// 2 Unicode 字符集TCHAR szText[256] = { 0 };ReadFile(hFile, szText, nLow, &nLen, NULL);TCHAR pszText[256] = { 0 };wsprintf(pszText, _T("數據:%s, 準備讀取 : %d, 實際讀取 : %d\n"), szText, nLow, nLen);//WriteConsole(hOutput, pszText, wcslen(pszText), NULL, NULL);WriteConsole(hOutput, pszText, 150, NULL, NULL);CloseHandle(hFile); } void UseFile() { // CopyFile( _T("y:/file.txt"), _T("Y:/123/nofile.txt"), FALSE ); // DeleteFile( _T("y:/file.txt"));MoveFile(_T("y:/123/nofile.txt"), _T("y:/file.txt"));perro(_T("MoveFile")); }int _tmain(int argc, _TCHAR* argv[]) {hOutput = GetStdHandle(STD_OUTPUT_HANDLE);Create( );Write( );Read( );//UseFile();return 0; }運行如下;
WriteConsole(hOutput, szText, wcslen(szText), NULL, NULL) 這句,wcslen(szText)會報如下的錯,
? ? 先改為直接使用數值,?WriteConsole(hOutput, szText, 50, NULL, NULL);
如果要使用printf則包含?#include <stdio.h>;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE),獲取控制臺窗口句柄;
WriteConsole(hOutput, szText, 50, NULL, NULL),往控制臺窗口寫;
總結
以上是生活随笔為你收集整理的win32文件读写demo的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC++更改鼠标指针为系统预定义形状和自
- 下一篇: VC++ 使用BitBlt函数显示位图