// 디렉토리인지 알아냄.
	bool is_directory( const std::string & path )
	{
		DWORD ret = ::GetFileAttributes( path.c_str() );

		if( ret == INVALID_FILE_ATTRIBUTES )
			return false;

		if( ret & FILE_ATTRIBUTE_DIRECTORY )
			return true;

		return false;
	}

	// 파일 경로와 관계된 모든 부모 디렉토리를 만든다.
	bool dig_path( const std::string & fullPath )
	{
		using std::string;
		string  path = fullPath;

		// 파일경로에서 디렉토리 경로만 얻음.
		string::size_type pos = path.find_last_of( "/\\" );
		if( pos != string::npos )
		{
			path.erase( ++pos, string::npos );
		}

		// 네트워크 경로 인가? 예제) "\\192.168.0.1\test"
		pos = 0;
		if( path.compare( 0, 2, "\\\\") == 0 )
			pos = 2;

		// 상위 경로를 찾아가며 디렉토리를 순서대로 만든다.
		while( (pos = path.find_first_of( "/\\", pos )) != string::npos )
		{
			string subPath = path.substr( 0, pos++ );

			if(is_directory(subPath )==false)
				::CreateDirectory (subPath.c_str(), 0);
		}

		return true;
	}

+ Recent posts