UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FileSystem.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Async/Async.h"
7
8namespace BuildPatchServices
9{
11 {
12 // Value for no attributes.
13 None = 0,
14 // Whether the file exists on the storage volume.
15 Exists = 1 << 0,
16 // Whether the file is readonly.
17 ReadOnly = 1 << 1,
18 // Whether the file is compressed.
19 Compressed = 1 << 2,
20 // Whether the file is executable.
21 Executable = 1 << 3
22 };
23 ENUM_CLASS_FLAGS(EAttributeFlags);
24
25 enum class EWriteFlags : uint32
26 {
27 None = 0,
28 NoFail = 1 << 0,
29 NoReplaceExisting = 1 << 1,
30 EvenIfReadOnly = 1 << 2,
31 Append = 1 << 3,
32 AllowRead = 1 << 4
33 };
34 ENUM_CLASS_FLAGS(EWriteFlags);
35
36 enum class EReadFlags : uint32
37 {
38 None = 0,
39 NoFail = 1 << 0,
40 Silent = 1 << 1,
41 AllowWrite = 1 << 2
42 };
43 ENUM_CLASS_FLAGS(EReadFlags);
44
51 {
52 public:
53 virtual ~IFileSystem() {}
54
60 virtual bool DirectoryExists(const TCHAR* DirectoryPath) const = 0;
61
67 virtual bool MakeDirectory(const TCHAR* DirectoryPath) const = 0;
68
75 virtual bool GetFileSize(const TCHAR* Filename, int64& FileSize) const = 0;
76
83 virtual bool GetAttributes(const TCHAR* Filename, EAttributeFlags& Attributes) const = 0;
84
91 virtual bool GetTimeStamp(const TCHAR* Filename, FDateTime& TimeStamp) const = 0;
92
99 virtual bool SetReadOnly(const TCHAR* Filename, bool bIsReadOnly) const = 0;
100
107 virtual bool SetCompressed(const TCHAR* Filename, bool bIsCompressed) const = 0;
108
115 virtual bool SetExecutable(const TCHAR* Filename, bool bIsExecutable) const = 0;
116
123 virtual TUniquePtr<FArchive> CreateFileReader(const TCHAR* Filename, EReadFlags ReadFlags = EReadFlags::None) const = 0;
124
131 virtual TUniquePtr<FArchive> CreateFileWriter(const TCHAR* Filename, EWriteFlags WriteFlags = EWriteFlags::None) const = 0;
132
139 virtual bool LoadFileToString(const TCHAR* Filename, FString& Contents) const = 0;
140
147 virtual bool SaveStringToFile(const TCHAR* Filename, const FString& Contents) const = 0;
148
154 virtual bool DeleteFile(const TCHAR* Filename) const = 0;
155
162 virtual bool MoveFile(const TCHAR* FileDest, const TCHAR* FileSource) const = 0;
163
170 virtual bool CopyFile(const TCHAR* FileDest, const TCHAR* FileSource) const = 0;
171
177 virtual bool FileExists(const TCHAR* Filename) const = 0;
178
185 virtual void FindFiles(TArray<FString>& FoundFiles, const TCHAR* Directory, const TCHAR* FileExtension = nullptr) const = 0;
186
193 virtual void FindFilesRecursively(TArray<FString>& FoundFiles, const TCHAR* Directory, const TCHAR* FileExtension = nullptr) const = 0;
194
203 virtual void ParallelFindFilesRecursively(TArray<FString>& FoundFiles, const TCHAR* Directory, const TCHAR* FileExtension = nullptr, EAsyncExecution AsyncExecution = EAsyncExecution::ThreadPool) const = 0;
204
213 virtual int64 GetAllowedBytesToWriteThrottledStorage(const TCHAR* DestinationPath = nullptr) const = 0;
214 };
215
220 {
221 public:
226 static IFileSystem* Create();
227 };
228}
EAsyncExecution
Definition Async.h:28
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition FileSystem.h:220
static IFileSystem * Create()
Definition FileSystem.cpp:397
Definition FileSystem.h:51
virtual void FindFiles(TArray< FString > &FoundFiles, const TCHAR *Directory, const TCHAR *FileExtension=nullptr) const =0
virtual ~IFileSystem()
Definition FileSystem.h:53
virtual bool SaveStringToFile(const TCHAR *Filename, const FString &Contents) const =0
virtual bool LoadFileToString(const TCHAR *Filename, FString &Contents) const =0
virtual int64 GetAllowedBytesToWriteThrottledStorage(const TCHAR *DestinationPath=nullptr) const =0
virtual TUniquePtr< FArchive > CreateFileReader(const TCHAR *Filename, EReadFlags ReadFlags=EReadFlags::None) const =0
virtual TUniquePtr< FArchive > CreateFileWriter(const TCHAR *Filename, EWriteFlags WriteFlags=EWriteFlags::None) const =0
virtual bool MoveFile(const TCHAR *FileDest, const TCHAR *FileSource) const =0
virtual bool FileExists(const TCHAR *Filename) const =0
virtual bool GetFileSize(const TCHAR *Filename, int64 &FileSize) const =0
virtual bool CopyFile(const TCHAR *FileDest, const TCHAR *FileSource) const =0
virtual bool GetAttributes(const TCHAR *Filename, EAttributeFlags &Attributes) const =0
virtual bool SetExecutable(const TCHAR *Filename, bool bIsExecutable) const =0
virtual bool DirectoryExists(const TCHAR *DirectoryPath) const =0
virtual void ParallelFindFilesRecursively(TArray< FString > &FoundFiles, const TCHAR *Directory, const TCHAR *FileExtension=nullptr, EAsyncExecution AsyncExecution=EAsyncExecution::ThreadPool) const =0
virtual bool SetReadOnly(const TCHAR *Filename, bool bIsReadOnly) const =0
virtual bool GetTimeStamp(const TCHAR *Filename, FDateTime &TimeStamp) const =0
virtual bool MakeDirectory(const TCHAR *DirectoryPath) const =0
virtual bool SetCompressed(const TCHAR *Filename, bool bIsCompressed) const =0
virtual void FindFilesRecursively(TArray< FString > &FoundFiles, const TCHAR *Directory, const TCHAR *FileExtension=nullptr) const =0
virtual bool DeleteFile(const TCHAR *Filename) const =0
EAttributeFlags
Definition FileSystem.h:11
EReadFlags
Definition FileSystem.h:37
EWriteFlags
Definition FileSystem.h:26
Definition Array.h:670
Definition UniquePtr.h:107
Definition BuildPatchFileConstructor.h:28
Definition DateTime.h:76