FileUtilities Class Reference

#include <file_utilities.h>

Public Types

using WriteDirectoryFilterDelegate = Delegate< Bool(const Url &url)>
 
using ReadDirectoryTreeReceiver = ValueReceiver< const Block< const String > &, Int64, const DataDictionary & >
 

Static Public Member Functions

static MAXON_METHOD Result< void > ReadFileToMemory (UrlOrInputStream &&name, WritableArrayInterface< Char > &arr)
 
static MAXON_METHOD Result< void > ReadUtfFile (UrlOrInputStream &&url, WritableArrayInterface< Utf32Char > &arr, UTFTEXT_OPTIONS::TEXTENCODING defaultDecoding=UTFTEXT_OPTIONS::TEXTENCODING::UTF8)
 
static MAXON_METHOD Result< void > WriteUtfFile (const Url &url, const ArrayInterface< Utf32Char > &arr, UTFTEXT_OPTIONS::TEXTENCODING encoding=UTFTEXT_OPTIONS::TEXTENCODING::UTF8, Bool dontWriteHeader=false)
 
static MAXON_METHOD Result< void > CompareFiles (UrlOrInputStream &&file1, UrlOrInputStream &&file2)
 
template<typename T >
static Result< void > ReadToArray (UrlOrInputStream &&url, BaseArray< T > &dest)
 
static MAXON_METHOD Result< void > CopyStream (const InputStreamRef &from, const OutputStreamRef &to)
 
static MAXON_METHOD Result< void > CopyStreamProgress (const InputStreamRef &from, const OutputStreamRef &to, const IoProgressDelegate &progress)
 
static MAXON_METHOD Result< void > CopyFileOrDirectory (const Url &from, const Url &to)
 
static MAXON_METHOD Result< void > CopyFileOrDirectory (const Url &from, const String &to, const WriteArchiveRef &archive)
 
static MAXON_METHOD Result< void > WriteDirectoryTree (const Url &root, UrlOrOutputStream &&out, const WriteDirectoryFilterDelegate &filterDelegate)
 
static MAXON_METHOD Result< BoolReadDirectoryTree (UrlOrInputStream &&in, const ReadDirectoryTreeReceiver &receiver)
 
static MAXON_METHOD Result< OutputStreamRef > CreateCStringOutputStream (CString &str, Int maxLength=LIMIT< Int >::MAX)
 
static MAXON_METHOD Result< OutputStreamRef > CreateNullOutputStream ()
 
static MAXON_METHOD Result< void > WriteArray (UrlOrOutputStream &&out, const Block< Char > &buffer)
 
static MAXON_METHOD Result< void > WriteString (UrlOrOutputStream &&out, const String &string, const StringEncodingRef &encoding=GetUtf8DefaultEncoder())
 
static MAXON_METHOD Result< StringReadString (UrlOrInputStream &&in, const StringDecodingRef &decoding=GetUtf8DefaultDecoder())
 

Private Member Functions

 MAXON_INTERFACE_NONVIRTUAL (FileUtilities, MAXON_REFERENCE_NONE, "net.maxon.interface.fileutilities")
 

Member Typedef Documentation

◆ WriteDirectoryFilterDelegate

return true to add file to index, false to ignore in index

◆ ReadDirectoryTreeReceiver

using ReadDirectoryTreeReceiver = ValueReceiver<const Block<const String>&, Int64, const DataDictionary&>

Member Function Documentation

◆ MAXON_INTERFACE_NONVIRTUAL()

MAXON_INTERFACE_NONVIRTUAL ( FileUtilities  ,
MAXON_REFERENCE_NONE  ,
"net.maxon.interface.fileutilities"   
)
private

◆ ReadFileToMemory()

static MAXON_METHOD Result<void> ReadFileToMemory ( UrlOrInputStream &&  name,
WritableArrayInterface< Char > &  arr 
)
static

Reads a file into memory.

Parameters
[in]nameName or Stream of the file.
[out]arrArray holding the memory, will be initialized inside.
Returns
OK on success.

◆ ReadUtfFile()

static MAXON_METHOD Result<void> ReadUtfFile ( UrlOrInputStream &&  url,
WritableArrayInterface< Utf32Char > &  arr,
UTFTEXT_OPTIONS::TEXTENCODING  defaultDecoding = UTFTEXT_OPTIONS::TEXTENCODING::UTF8 
)
static

Reads a file into memory. If an UTF encoding is detected the proper decoding takes place.

Parameters
[in]urlName or Stream of the file.
[out]arrArray holding the memory, will be initialized inside.
[in]defaultDecodingThe character decoding that will be used if the file does not contain any Byte Order Mark (BOM).
Returns
OK on success.

◆ WriteUtfFile()

static MAXON_METHOD Result<void> WriteUtfFile ( const Url url,
const ArrayInterface< Utf32Char > &  arr,
UTFTEXT_OPTIONS::TEXTENCODING  encoding = UTFTEXT_OPTIONS::TEXTENCODING::UTF8,
Bool  dontWriteHeader = false 
)
static

Writes a Utf32Char array from memory to disc in a UTF-encoded format.

Parameters
[in]urlThe file to be written.
[in]arrArray holding the data.
[in]encodingThe character encoding to be used.
[in]dontWriteHeaderIf true the utf8 header will not be written.
Returns
OK on success.

◆ CompareFiles()

static MAXON_METHOD Result<void> CompareFiles ( UrlOrInputStream &&  file1,
UrlOrInputStream &&  file2 
)
static

Compares the content of 2 files for binary equality.

Parameters
[in]file1Name or Stream of the file 1.
[in]file2Name or Stream of the file 2.
Returns
Success and result of the comparison. If the files don't match or cannot be read an error is returned.

◆ ReadToArray()

Result< void > ReadToArray ( UrlOrInputStream &&  url,
BaseArray< T > &  dest 
)
static

Reads stream directly into an array

Parameters
[in]urlpath to stream
[out]destBaseArray where the data is stored

◆ CopyStream()

static MAXON_METHOD Result<void> CopyStream ( const InputStreamRef &  from,
const OutputStreamRef &  to 
)
static

Copies all bytes from from to #to. This function reads bytes as long as possible. It doesn't call the Close() method on from or #to.

Parameters
[in]fromThe stream from which the bytes shall be read.
[in]toThe stream to which the bytes shall be written.
Returns
Success of operation.

◆ CopyStreamProgress()

static MAXON_METHOD Result<void> CopyStreamProgress ( const InputStreamRef &  from,
const OutputStreamRef &  to,
const IoProgressDelegate progress 
)
static

Copies all bytes from from to #to. This function reads bytes as long as possible. It doesn't call the Close() method on from or #to.

Parameters
[in]fromThe stream from which the bytes shall be read.
[in]toThe stream to which the bytes shall be written.
[in]progressProgress delegate which is called to notify about the progress.
Returns
Success of operation.

◆ CopyFileOrDirectory() [1/2]

static MAXON_METHOD Result<void> CopyFileOrDirectory ( const Url from,
const Url to 
)
static

Copies the file or directory from to #to. If it doesn't already exist, a file or directory is created for the Url #to. For a file its content is copied, for a directory a recursive copy happens. Symbolic links are skipped.

Parameters
[in]fromThe source Url.
[in]toThe destination Url.
Returns
Success of operation.

◆ CopyFileOrDirectory() [2/2]

static MAXON_METHOD Result<void> CopyFileOrDirectory ( const Url from,
const String to,
const WriteArchiveRef &  archive 
)
static

Copies the file or directory from into an archive #archive/#to. If it doesn't already exist, a file or directory is created for the Url #to. For a file its content is copied, for a directory a recursive copy happens. Symbolic links are skipped.

Parameters
[in]fromThe source Url.
[in]toThe relative destination Url in the archive.
[in]archiveArchive to write to.
Returns
Success of operation.

◆ WriteDirectoryTree()

static MAXON_METHOD Result<void> WriteDirectoryTree ( const Url root,
UrlOrOutputStream &&  out,
const WriteDirectoryFilterDelegate filterDelegate 
)
static

◆ ReadDirectoryTree()

static MAXON_METHOD Result<Bool> ReadDirectoryTree ( UrlOrInputStream &&  in,
const ReadDirectoryTreeReceiver receiver 
)
static

◆ CreateCStringOutputStream()

static MAXON_METHOD Result<OutputStreamRef> CreateCStringOutputStream ( CString str,
Int  maxLength = LIMITInt >::MAX 
)
static

Creates an output stream which writes to the given CString. Whenever bytes are written to the stream, these will be appended to str.

Parameters
[out]strThe string to write to. You have to keep the object alive as long as the stream is in use. Previously existing content of str is kept.
[in]maxLengthThe maximum length of the string. When this limit is exceeded, no further characters will be appended.
Returns
New output stream.

◆ CreateNullOutputStream()

static MAXON_METHOD Result<OutputStreamRef> CreateNullOutputStream ( )
static

Creates an output stream which just discards any bytes written to it without reporting errors (similar to the null device of operating systems, e.g. {/dev/null}).

Returns
New output stream.

◆ WriteArray()

static MAXON_METHOD Result<void> WriteArray ( UrlOrOutputStream &&  out,
const Block< Char > &  buffer 
)
static

◆ WriteString()

static MAXON_METHOD Result<void> WriteString ( UrlOrOutputStream &&  out,
const String string,
const StringEncodingRef &  encoding = GetUtf8DefaultEncoder() 
)
static

◆ ReadString()

static MAXON_METHOD Result<String> ReadString ( UrlOrInputStream &&  in,
const StringDecodingRef &  decoding = GetUtf8DefaultDecoder() 
)
static