Convenience for uri.basename.
Return a negative integer, zero, or a positive integer if this object is less than, equal to, or greater than the specified object:
this < that => <0
this == that => 0
this > that => >0
This method may also be accessed via the <
<=
<=>
>=
and >
shortcut operators. If not overridden the default
implementation compares the toStr
representations. Also see docLang.
Examples:
3.compare(8) => -1
8.compare(3) => 1
8.compare(8) => 0
3 <=> 8 => -1 // shortcut for 3.compare(8)
Copy this file or directory to the new specified location. If this file represents a directory, then it recursively copies the entire directory tree.
The options map is used to customize how the copy is performed. The following summarizes the options:
If the "exclude" option is a Regex - each source file's Uri
string is checked for a match to skip. If a directory is
skipped, then its children are skipped also. The exclude
option can also be a function of type |File f->Bool|
to
check each file. Exclude processing is performed first
before checking for an overwrite.
If during the copy, an existing file of the same name is
found, then the "overwrite" option should be true
to
overwrite or false
to skip. The overwrite option can also
be a function of type |File to,File from->Bool|
which is
passed every to/from file to be overwritten. If the
overwrite function throws an exception, it is raised to the copyTo
caller. If a directory overwrite is skipped, then its
children are skipped too. If options are null or overwrite
is unspecified then the copy is immediately terminated with
an IOErr.
Any IOErr or other error encountered during the file copy immediately terminates the copy and is raised to the caller, which might leave the copy in an unfinished state.
Return the to
destination file.
Create a file or directory represented by this Uri. If isDir() is false then create an empty file, or if the file already exists overwrite it to empty. If isDir() is true then create a directory, or if the directory already exists do nothing. This method will automatically create any parent directories. Throw IOErr on error. Return this.
Delete this file. If this file represents a directory, then recursively delete it. If the file does not exist, then no action is taken. Throw IOErr on error.
Request that the file or directory represented by this File be deleted when the virtual machine exits. Long running applications should use this method with care since each file marked to delete will consume resources. Throw IOErr on error. Return this.
Convenience for in.eachLine. The input stream is guaranteed to be closed.
File equality is based on the un-normalized Uri used to create the File.
Return if this file exists.
Convenience for uri.ext.
Return uri.hash
.
Open a new buffered InStream used to read from this file. A bufferSize of null or zero will return an unbuffered input stream. Throw IOErr on error.
Optional
bufferSize: numberConvenience for uri.isDir
If this is a file, return if the file size is zero or null. If this is a directory, return if this directory has no files without reading a full listing.
Return if this file is executable.
Return if this file should be hidden to users. On Unix hidden files start with a dot and on Windows a metadata flag is used.
Return if this file is readable.
Return if this file is writable.
List the files contained by this directory. This list includes both child sub-directories and normal files. If the directory is empty or this file doesn't represent a directory, then return an empty list. If pattern is non-null then only filenames matched are returned or if null then all filenames.
Optional
pattern: RegexList the child sub-directories contained by this directory. If the directory doesn't contain any sub-directories or this file doesn't represent a directory, then return an empty list. If pattern is non-null then only filenames matched are returned or if null then all filenames.
Optional
pattern: RegexList the child files (excludes directories) contained by this directory. If the directory doesn't contain any child files or this file doesn't represent a directory, then return an empty list. If pattern is non-null then only filenames matched are returned or if null then all filenames.
Optional
pattern: RegexConvenience for uri.mimeType.
Memory map the region of the file specified by pos
and size
.
If size is null, then use the file's size as a default. The
file is paged into virtual memory on demand. Modes are:
Optional
mode: stringOptional
pos: numberOptional
size: numberGet time the file was last modified or null if unknown.
Convenience for uri.name.
Normalize this file path to its canonical representation. If a file on the local file system, then the uri will include the "file:" scheme. Throw IOErr on error.
Open this file for random access. Modes are:
The Buf instance returned is backed by a random access file pointer. It provides the same functionality as a memory backed buffer, except for a couple of exceptions such as Buf.unread. The resulting Buf is a raw interface to the random access file, no buffering is provided at the framework level - so use methods which only access a few bytes carefully. However methods which transfer data with other Bufs and IO streams will use an internal buffer for efficiency.
Optional
mode: stringGet this File as an operating system specific path on the local system. If this File doesn't represent a path on the local file system then return null.
Open a new buffered OutStream used to write to this file. If append is true, then we open the file to append to the end, otherwise it is opened as an empty file. A bufferSize of null or zero will return an unbuffered output stream. Throw IOErr on error.
Optional
append: booleanOptional
bufferSize: numberGet the parent directory of this file or null. Also see Uri.parent.
Convenience for uri.pathStr.
Make a new File instance by joining this file's Uri together with the specified path. If the file maps to a directory and the resulting Uri doesn't end in slash then an IOErr is thrown - or pass false for checkSlash to have the slash implicitly added.
Examples:
File(`a/b/`) + `c` => File(`a/b/c`)
File(`a/b`) + `c` => File(`a/c`)
Optional
checkSlash: booleanConvenience for in.readAllBuf. The input stream is guaranteed to be closed.
Convenience for in.readAllLines. The input stream is guaranteed to be closed.
Convenience for in.readAllStr. The input stream is guaranteed to be closed.
Optional
normalizeNewlines: booleanConvenience for in.readObj The input stream is guaranteed to be closed.
Convenience for in.readProps(). The input stream is guaranteed to be closed.
Renaming this file within its current directory. This method is a convenience for:
return this.moveTo(parent + newName)
Return the size of the file in bytes, otherwise null if a directory or unknown.
Get the store instance which models the storage pool, device, partition, or volume used to store this file. Raise UnsupportedErr if this file is not associated with a store.
Get an immutable representation of this instance or throw NotImmutableErr if this object cannot be represented as an immutable:
Return uri.toStr
.
Trap a dynamic call for handling. Dynamic calls are invoked with the -> shortcut operator:
a->x a.trap("x", null)
a->x() a.trap("x", null)
a->x = b a.trap("x", [b])
a->x(b) a.trap("x", [b])
a->x(b, c) a.trap("x", [b, c])
The default implementation provided by Obj attempts to use reflection. If name maps to a method, it is invoked with the specified arguments. If name maps to a field and args.size is zero, get the field. If name maps to a field and args.size is one, set the field and return args[0]. Otherwise throw UnknownSlotErr.
Return the Uri path used to create this File. This Uri may be absolute or relative.
Recursively walk this file/directory top down. If this file is not a directory then the callback is invoked exactly once with this file. If a directory, then the callback is invoked with this file, then recursively for each child file.
This method called whenever an it-block is applied to an
object. The default implementation calls the function with this
,
and then returns this
.
Convenience for out.writeObj The output stream is guaranteed to be closed.
Convenience for out.writeProps(). The output stream is guaranteed to be closed.
Static
createCreate a temporary file which is guaranteed to be a new, empty file with a unique name. The file name will be generated using the specified prefix and suffix. If dir is non-null then it is used as the file's parent directory, otherwise the system's default temporary directory is used. If dir is specified it must be a directory on the local file system. See deleteOnExit if you wish to have the file automatically deleted on exit. Throw IOErr on error.
Examples:
File.createTemp("x", ".txt") => `/tmp/x67392.txt`
File.createTemp.deleteOnExit => `/tmp/fan5284.tmp`
Optional
prefix: stringOptional
suffix: stringOptional
dir: FileStatic
echoWrite x.toStr
to standard output followed by newline. If x
is null then print "null". If no argument is provided then
print an empty line.
Optional
x: JsObjStatic
makeMake a File for the Uri which represents a file on the local file system. If creating a Uri to a directory, then the Uri must end in a trailing "/" slash or IOErr is thrown - or you may pass false for checkSlash in which case the trailing slash is implicitly added. However if a trailing slash is added, then the resulting File's uri will not match the uri passed to this method. If the file doesn't exist, then it is assumed to be to a directory based on a trailing slash (see isDir). If the Uri has a relative path, then it is assumed to be relative to the current working directory. Throw ArgErr if the Uri has a scheme other than null or "file:".
Optional
checkSlash: booleanStatic
osMake a File for the specified operating system specific path on the local file system.
Static
osStatic
pathReturn the platform's separator for a list of paths: semicolon on Windows, colon on Unix.
Static
sepReturn the platform's separator for names within a path: backslash on Windows, forward slash on Unix.
File is used to represent a Uri path to a file or directory. See examples.