37 struct BasicFileData {
47 BasicFileData& operator=(BasicFileData
const&);
48 BasicFileData(BasicFileData
const&);
52 struct FileTransferProgress {
63 FileTransferProgress& operator=(FileTransferProgress
const&);
64 FileTransferProgress(FileTransferProgress
const&);
65 FileTransferProgress();
71 virtual ::Core::Result openFile(
75 ::Core::FileBufferingMode bufferingMode
84 virtual ::Core::Result getFileSize(
::Core::PathView filePath, uint64* pFileSize) = 0;
94 virtual ::Core::Result readFileData(
::Core::PathView filePath, ::std::vector<uchar>& data) = 0;
96 virtual ::Bedrock::Result<::std::string> readFile(
::Core::PathView filePath) = 0;
98 virtual ::Bedrock::Result<void> writeFile(
::Core::PathView filePath, ::std::string_view data) = 0;
100 virtual ::Core::Result createOneDirectory(
::Core::PathView directoryPath) = 0;
102 virtual ::Core::Result createOneDirectoryIfNotExisting(
::Core::PathView dirName) = 0;
104 virtual ::Core::Result createDirectoryRecursively(
::Core::PathView dirName) = 0;
110 virtual ::Core::Result deleteEmptyDirectoryRecursively(
::Core::PathView dirPath) = 0;
112 virtual ::Core::Result deleteDirectoryAndContentsRecursively(
::Core::PathView dirName) = 0;
114 virtual ::Core::Result deleteDirectoryContentsRecursively(
::Core::PathView directoryName) = 0;
118 virtual ::Core::Result iterateOverDirectory(
120 ::Core::DirectoryIterationFlags flags,
124 virtual ::Core::Result
127 virtual ::Core::Result getDirectoryFilesAndSizes(
128 ::std::vector<::Core::FileSystem::BasicFileData>& filesOut,
132 virtual ::Core::Result getDirectoryFilesRecursively(
137 virtual ::Core::Result getDirectoryFilesSizeRecursively(uint64& totalSize,
::Core::PathView directoryPath) = 0;
139 virtual ::Core::Result getDirectoryFilesAllocatedSizeRecursively(
141 uint64& totalAllocatedSize,
151 virtual bool fileOrDirectoryExists(
::Core::PathView fileOrDirectoryName) = 0;
153 virtual ::Core::Result getFileOrDirectorySize(
::Core::PathView path, uint64* pFileSizeOut) = 0;
157 virtual ::Core::Result removeIgnoredThrottlePath(
::Core::PathView path) = 0;
161 virtual ::Core::Result getLastModificationTime(
::Core::PathView filePath, int64* pLastModificationTime) = 0;
163 virtual ::Core::Result
166 virtual ::Core::Result
171 virtual ::Core::Result copyFlatFile(
174 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
175 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
178 virtual ::Core::Result createDirectoryForFile(
::Core::PathView filePath) = 0;
180 virtual ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
183 virtual ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
186 virtual ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
187 createUniquePathFromSeed(
::Core::PathView basePath, ::std::function<::std::string(
int)> seedGenerator) = 0;
189 virtual ::std::vector<::Core::PathBuffer<::std::string>> splitPathIntoFullPathSegments(
::Core::PathView path) = 0;
191 virtual ::Core::Result readFileDataExt(
195 ::std::vector<uchar>&
buffer,
199 virtual ::Core::Result cleanPath_deprecated(
204 virtual ::Core::Result cleanPathSeparators_deprecated(
211 virtual ::std::unique_ptr<::Core::FileSizePresetToken>
214 virtual ::Core::Result _getDirectoriesAndFileSizesRecursively(
217 ::std::vector<::Core::FileSystem::BasicFileData>& filesOut
220 virtual ::Core::Result _copyDirectoryStructure(
227 virtual ::Core::Result _copyFilesWithLimit(
230 ::std::vector<::Core::FileSystem::BasicFileData>& files,
231 uint64& currentFileBytesWritten,
232 uint64
const transactionLimit,
238 virtual ::Core::Result _copyFlatFile(
241 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
242 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
245 virtual ::std::optional<uint64> _checkFileInitialSize(
::Core::PathView path) = 0;
251 MCNAPI static ::Core::FileSystem&
get();