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 deleteDirectoryAndContentsRecursively(
::Core::PathView dirName) = 0;
112 virtual ::Core::Result deleteDirectoryContentsRecursively(
::Core::PathView directoryName) = 0;
116 virtual ::Core::Result iterateOverDirectory(
118 ::Core::DirectoryIterationFlags flags,
122 virtual ::Core::Result
125 virtual ::Core::Result getDirectoryFilesAndSizes(
126 ::std::vector<::Core::FileSystem::BasicFileData>& filesOut,
130 virtual ::Core::Result getDirectoryFilesRecursively(
135 virtual ::Core::Result getDirectoryFilesSizeRecursively(uint64& totalSize,
::Core::PathView directoryPath) = 0;
137 virtual ::Core::Result getDirectoryFilesAllocatedSizeRecursively(
139 uint64& totalAllocatedSize,
149 virtual bool fileOrDirectoryExists(
::Core::PathView fileOrDirectoryName) = 0;
151 virtual ::Core::Result getFileOrDirectorySize(
::Core::PathView path, uint64* pFileSizeOut) = 0;
155 virtual ::Core::Result removeIgnoredThrottlePath(
::Core::PathView path) = 0;
159 virtual ::Core::Result getLastModificationTime(
::Core::PathView filePath, int64* pLastModificationTime) = 0;
161 virtual ::Core::Result
164 virtual ::Core::Result
169 virtual ::Core::Result copyFlatFile(
172 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
173 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
176 virtual ::Core::Result createDirectoryForFile(
::Core::PathView filePath) = 0;
178 virtual ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
181 virtual ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
184 virtual ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
185 createUniquePathFromSeed(
::Core::PathView basePath, ::std::function<::std::string(
int)> seedGenerator) = 0;
187 virtual ::std::vector<::Core::PathBuffer<::std::string>> splitPathIntoFullPathSegments(
::Core::PathView path) = 0;
189 virtual ::Core::Result readFileDataExt(
193 ::std::vector<uchar>&
buffer,
197 virtual ::Core::Result cleanPath_deprecated(
202 virtual ::Core::Result cleanPathSeparators_deprecated(
209 virtual ::std::unique_ptr<::Core::FileSizePresetToken>
212 virtual ::Core::Result _getDirectoriesAndFileSizesRecursively(
215 ::std::vector<::Core::FileSystem::BasicFileData>& filesOut
218 virtual ::Core::Result _copyDirectoryStructure(
225 virtual ::Core::Result _copyFilesWithLimit(
228 ::std::vector<::Core::FileSystem::BasicFileData>& files,
229 uint64& currentFileBytesWritten,
230 uint64
const transactionLimit,
236 virtual ::Core::Result _copyFlatFile(
239 ::std::vector<::Core::ExcludedPath>
const& excludedDirectories,
240 ::std::vector<::Core::ExcludedPath>
const& excludedFiles
243 virtual ::std::optional<uint64> _checkFileInitialSize(
::Core::PathView path) = 0;
249 MCNAPI static ::Core::FileSystem&
get();