공부 기록

[UE4] 런타임에 파일탐색기 열기 본문

Unreal/C++

[UE4] 런타임에 파일탐색기 열기

혜멘 2022. 2. 22. 11:30

Runtime File Directory Open C++

런타임 중에 코드로 파일 탐색기를 여는 방법이다.

선택한 디렉토리의 경로를 가져오거나, 디렉토리 안의 파일 목록을 가져올 수 있다.

 

1. 선택한 디렉토리 경로 가져오기

디렉토리를 선택할 경로를 넘겨주고 디렉토리 탐색기를 연다.

열린 탐색기에서 디렉토리를 선택하면 그 경로를 받아온다.

#include "DesktopPlatform/Public/IDesktopPlatform.h"
#include "DesktopPlatform/Public/DesktopPlatformModule.h"

void UFunctionLibrary::GetOpenDirectoryDialog(FString DirectoryPath, FString& Directory, bool& IsSelect) {
	IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();
	FString DefaultFile = TEXT("");
	FString DefaultPath = DirectoryPath; 

	if (DesktopPlatform) {
		DesktopPlatform->OpenDirectoryDialog(
			NULL,
			TEXT("Select Directory"),	// 탐색기 제목
			DefaultPath,	// 열고싶은 탐색기 경로
			Directory	// 선택한 디렉토리 경로가 여기에 들어옴
		);
	}
	
	// 아무 폴더도 고르지 않았을 경우
	if (DirectoryName.Equals(FPaths::GetBaseFilename(Directory))) IsSelect = false;
	else IsSelect = true;

}

 

2. 선택한 디렉토리에 속한 파일 목록을 가져오기

디렉토리를 선택할 경로를 넘겨주고 파일 탐색기를 연다. 

열린 탐색기에서 디렉토리를 선택하면 해당 경로에 속한 파일 목록을 가져온다. 파일 타입을 지정할 수 있다.

ex) FBX 파일을 찾고 싶다면 "FBX Files (*.fbx)|*.fbx|" 형식으로 넣으면 된다.

선택한 파일은 FileNames 배열에 담겨 다른 곳에서 사용 가능하다. (블루프린트 callable 하여 블루프린트에서 사용함)

.

#include "DesktopPlatform/Public/IDesktopPlatform.h"
#include "DesktopPlatform/Public/DesktopPlatformModule.h"

bool AMyPlayerController::OpenFileExample(TArray<FString>& FileNames, FString DialogueTitle, FString FileTypes, bool multiselect)
{
	IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();
	bool bOpened = false;
	FString DefaultFile = TEXT("");
	FString DefaultPath = TEXT("D:/디렉토리경로");
	FPaths::GetPath(DefaultPath);

	if (DesktopPlatform) {
		DesktopPlatform->OpenFileDialog(
			NULL,
			TEXT("Select file"),	// 파일탐색기 제목
			DefaultPath,	// 열고싶은 파일탐색기 경로
			DefaultFile,	// 동작하지 않는 파라미터같음 (지정해도 파일 안열림)
			FileType,	// 열고싶은 파일 종류
			EFileDialogFlags::None,
			FileNames // 디렉토리의 파일 목록이 여기로 들어옴
		);
	}
	bOpened = (FileNames.Num() > 0);
	return bOpened;
}

 

 

 

Comments