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 ファイルの内容です。 読めました。