Load a Text File

Hello,

i want to load a Textfile, i only know the Method with fstream



std::ifstream ifs("C:\myfile.txt");
std::string content((std::istreambuf_iterator<char>(ifs)),
(std::istreambuf_iterator<char>()));


But that doesn’t seem to work and i also need i need a FString.

How can i read a File and load it into a String?

Thanks
Greetings
Cybergebi

FFileHelper

You want FFileHelper.h !

Check it out in the Source code!

Here’s my code for saving a text file to hard disk

use this as reference for doing the reverse + FFileHelper.h

Thanks, really cool :slight_smile:

I have tryed your Code, but have a Problem


FString CompleteFilePath = "G:\saves\map.txt";
		if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*CompleteFilePath))
		{
			GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("Could not Find File"));
			return;
		}
const int64 FileSize = FPlatformFileManager::Get().GetPlatformFile().FileSize(*CompleteFilePath);

		//if not in player controller use UE_LOG. ClientMessages show up if you press ~ in-game
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("File Size is:"));
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, FString::FromInt(FileSize));

i got Following Error:


error C2220: warning treated as error - no object file generated 

What should i do?

you should post more of your compile error :slight_smile:

Alrigh, here the Code:


// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.

#include "MyProjectThirdPersion.h"
#include "SpawnHandler.h"
#include "FileHelpers.h"

ASpawnHandler::ASpawnHandler(const class FPostConstructInitializeProperties& PCIP)
	: Super(PCIP)
{

}

void ASpawnHandler::BeginPlay()
{

	Super::BeginPlay();
	if (GEngine)
	{
		FString CompleteFilePath = "G:\saves\map.txt";
		if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*CompleteFilePath))
		{
			GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("Could not Find File"));
			return;
		}

		const int64 FileSize = FPlatformFileManager::Get().GetPlatformFile().FileSize(*CompleteFilePath);

		//if not in player controller use UE_LOG. ClientMessages show up if you press ~ in-game
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("File Size is:"));
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, FString::FromInt(FileSize));
		

	}

}



and the FULL Error


Error	5	error : Failed to produce item: C:\Users\Cybergebi\Documents\Unreal Projects\MyProjectThirdPersion\Binaries\Win64\UE4Editor-MyProjectThirdPersion.pdb	C:\Users\Cybergebi\Documents\Unreal Projects\MyProjectThirdPersion\Intermediate\ProjectFiles\ERROR
Error	2	error C2220: warning treated as error - no 'object' file generated	C:\Users\Cybergebi\Documents\Unreal Projects\MyProjectThirdPersion\Source\MyProjectThirdPersion\SpawnHandler.cpp:      19
Error	6	error MSB3073: The command "G:\UnrealEngine\Engine\Build\BatchFiles\Build.bat MyProjectThirdPersionEditor Win64 Development "C:\Users\Cybergebi\Documents\Unreal Projects\MyProjectThirdPersion\MyProjectThirdPersion.uproject"" exited with code -1.	C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.MakeFile.Targets:	38
Warning	1	warning : Was not able to delete temporary file created by Unreal Build Tool: H:\Local\Temp	mpD196.tmp.bat	C:\Users\Cybergebi\Documents\Unreal Projects\MyProjectThirdPersion\Intermediate\ProjectFiles\EXEC
Warning	4	warning C4129: 'm' : unrecognized character escape sequence	C:\Users\Cybergebi\Documents\Unreal Projects\MyProjectThirdPersion\Source\MyProjectThirdPersion\SpawnHandler.cpp:	19	
Warning	3	warning C4129: 's' : unrecognized character escape sequence	C:\Users\Cybergebi\Documents\Unreal Projects\MyProjectThirdPersion\Source\MyProjectThirdPersion\SpawnHandler.cpp:	19

Thanks for helping me :smiley:

Oh, i just found the Error by myself :smiley:

For others who are also Searching for a Solution, the Read Code :rolleyes:



                FString CompleteFilePath = "G:\\saves\\map.txt";
		if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*CompleteFilePath))
		{
			GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("Could not Find File"));
			return;
		}

		const int64 FileSize = FPlatformFileManager::Get().GetPlatformFile().FileSize(*CompleteFilePath);

		//if not in player controller use UE_LOG. ClientMessages show up if you press ~ in-game
		
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, FString::FromInt(FileSize));
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("File Size is: (in kb)"));
		FString FileData = "TEST";
		FFileHelper::LoadFileToString(FileData, *CompleteFilePath);
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FileData);

Thanks for all

Greetings
Cybergebi

3 Likes

Works flawlessly. Thank you very much.

Here is the function I wrote to read a file from an absolute path :

FString UBPFL_FileIO::LoadFileToString(FString AbsolutePath)
{	
	FString result = "NONE";

	FFileHelper::LoadFileToString(result, *AbsolutePath); 
    //Reads file content and puts it inside result

    return result;
}