わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。

ファイルの読み込み

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






わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。