1
0
KF2-Dev-Scripts/Engine/Classes/FileWriter.uc
2020-12-13 18:01:13 +03:00

81 lines
2.1 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*
* This is a simple class that allows for secure writing of output files from within Script. The directory to which it writes
* files is determined by the file type member variable.
*/
class FileWriter extends Info
native;
/** Internal FArchive pointer */
var const native pointer ArchivePtr{FArchive};
/** File name, created via OpenFile() */
var const string Filename;
/** Type of file */
enum FWFileType
{
FWFT_Log, // Created in %GameDir%/Logs
FWFT_Stats, // Created in %GameDir%/Stats
FWFT_HTML, // Created in %GameDir%/Web/DynamicHTML
FWFT_User, // Created in %GameDir%/User
FWFT_Debug, // Created in %GameDir%/Debug
};
/** Holds the file type for this file. */
var const FWFileType FileType;
/**
* Whether we should flush to disk every time something is written.
* if false, only flush when the memory buffer is full or when the file is closed
*/
var bool bFlushEachWrite;
/** Whether to use async writes (if available) or not. Overrides bFlushEachWrite */
var bool bWantsAsyncWrites;
cpptext
{
virtual void BeginDestroy();
}
/**
* Opens the actual file using the specified name.
*
* @param InFilename name of file to open
* @param InFileType the type of file being written
* @param InExtension optional file extension to use, defaults to .txt if none is specified
* @param bUnique whether to make unique or not
* @param bIncludeTimeStamp whether to include timestamps or not
*/
native final function bool OpenFile(coerce string InFilename, optional FWFileType InFileType,
optional string InExtension, optional bool bUnique, optional bool bIncludeTimeStamp);
/**
* Closes the log file.
*/
native final function CloseFile();
/**
* Logs the given string to the log file.
*
* @param logString - string to dump
*/
native final function Logf(coerce string logString);
/**
* Overridden to automatically close the logfile on destruction.
*/
event Destroyed()
{
CloseFile();
}
defaultproperties
{
bFlushEachWrite=true
bTickIsDisabled=true
}