CreateFile関数とReadFile関数を利用してファイルの内容を読み込みます。
#include <stdio.h> #include <tchar.h> #include <iostream> #include <string> #include <locale.h> #include <windows.h> /* メイン */ int _tmain ( int argc , _TCHAR* argv[] ) { /* ロケールを日本に設定 これを設定するだけで、標準出力に日本語が表示される ようになります。 */ setlocale( LC_ALL, "Japanese" ); /* ファイルのオープン */ HANDLE hFile = ::CreateFile( L"c:¥¥test¥¥test_file_01.txt" , GENERIC_READ , 0 , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL ); if ( INVALID_HANDLE_VALUE == hFile ) { std::wcout << L"ファイルオープン失敗( " << ::GetLastError() << L" )" << std::endl; } else { std::wcout << L"ファイルオープン成功" << std::endl; // ファイルサイズの取得 DWORD dwFileSize = ::GetFileSize( hFile, NULL ); std::wcout << L"ファイルサイズ = " << dwFileSize << std::endl; // メモリの確保 BYTE* bpMemory = (BYTE*)::malloc( dwFileSize ); if ( NULL == bpMemory ) { // メモリ不足 std::wcout << L"メモリ不足" << std::endl; goto err; } // 読み取ったバイト数を格納する領域 DWORD dwNumberOfByteRead = 0; // ファイルの読み込み if ( 0 == ::ReadFile( hFile, bpMemory, dwFileSize, &dwNumberOfByteRead, NULL ) ) { // ファイル読み込み失敗 std::wcout << L"ファイル読み込み失敗( " << ::GetLastError() << L" )" << std::endl; goto err; } err: // ファイルクローズ ::CloseHandle( hFile ); // 読み込んだ内容の表示 std::cout << bpMemory << std::endl; // メモリの解放 if ( NULL != bpMemory ) { free( bpMemory ); } } // 正常終了 return( 0 ); }
ファイルオープン成功 ファイルサイズ = 34 ファイルの内容です。 読めました。