logo

abstract const class

sys::File

sys::Obj
  sys::File

File is used to represent a Uri path to a file or directory. See docCookbook::Files for examples of the File API.

Slots

basename

Str basename()

Convenience for uri.basename.

Source

copyInto

virtual File copyInto(File dir, Str:Obj options := null)

Copy this file under the specified directory and return the destination file. This method is a convenience for:

return this.copyTo(dir + this.name, options)

Source

copyTo

virtual File copyTo(File to, Str:Obj options := null)

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:

  • exclude: Regex or |File f->Bool|
  • overwrite: Bool or |File f->Bool|

If the "exclude" option is a Regex - each source file's Uri string is 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 to true to overwrite or false to skip. The overwrite option can also be a function of type |File f->Bool| which is passed every destination 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 it 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.

Source

create

abstract File create()

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.

Source

createTemp

static File createTemp(Str prefix := "fan", Str suffix := ".tmp", File dir := null)

Create 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`

Source

delete

abstract Void delete()

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.

Source

deleteOnExit

abstract File deleteOnExit()

Request that the file or directory represented by this File be deleted when the virtual machine exits. Long running applications should use this method will care since each file marked to delete will consume resources. Throw IOErr on error. Return this.

Source

eachLine

Void eachLine(|Str| f)

Convenience for in.eachLine. The input stream is guaranteed to be closed.

Source

equals

override Bool equals(Obj that)

File equality is based on the un-normalized Uri used to create the File.

Source

exists

abstract Bool exists()

Return if this file exists.

Source

ext

Str ext()

Convenience for uri.ext.

Source

hash

override Int hash()

Return uri.hash.

Source

in

abstract InStream in(Int bufferSize := 4096)

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.

Source

isDir

Bool isDir()

Convenience for uri.isDir

Source

list

abstract File[] list()

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.

Source

listDirs

virtual File[] listDirs()

List the child sub-directories contained by this directory. If the directory doesn't contain any sub-direcotries or this file doesn't represent a directory, then return an empty list.

Source

listFiles

virtual File[] listFiles()

List 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.

Source

make

static File make(Uri uri, Bool checkSlash := true)

Make 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.

Source

mimeType

MimeType mimeType()

Convenience for uri.mimeType.

Source

mmap

abstract Buf mmap(Str mode := "rw", Int pos := 0, Int size := null)

Memory map the region of the file specified by pos and size. The file is paged into virtual memory on demand. Modes are:

  • "r": map the file for reading only. Throws IOErr if file does not exist.
  • "rw": open the file for reading and writing; create if the file does not exist.
  • "p": private read/write mode will not propagate changes to other processes which have mapped the file.

Source

modified

abstract DateTime modified

Get time the file was last modified or null if unknown.

Source

moveInto

virtual File moveInto(File dir)

Move this file under the specified directory and return the destination file. This method is a convenience for:

return this.moveTo(dir + this.name)

Source

moveTo

abstract File moveTo(File to)

Move this file to the specified location. If this file is a directory, then the entire directory is moved. If the target file already exists or the move fails, then an IOErr is thrown. Return the to destination file.

Source

name

Str name()

Convenience for uri.name.

Source

normalize

abstract File normalize()

Normalize this file path to its canonical representation. Throw IOErr on error.

Source

open

abstract Buf open(Str mode := "rw")

Open this file for random access. Modes are:

  • "r": open the file for reading only. Throws IOErr if file does not exist.
  • "rw": open the file for reading and writing; create if the file does not exist.

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 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.

Source

os

static File os(Str osPath)

Make a File for the specified operating system specific path on the local file system.

Source

osPath

abstract Str osPath()

Get 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.

Source

osRoots

static File[] osRoots()

Get the root directories of the operating system's local file system.

Source

out

abstract OutStream out(Bool append := false, Int bufferSize := 4096)

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 input stream. Throw IOErr on error.

Source

parent

abstract File parent()

Get the parent directory of this file or null. Also see Uri.parent.

Source

path

Str[] path()

Convenience for uri.path.

Source

pathSep

static Str pathSep

Return the platform's separator for a list of paths: semicolon on Windows, colon on Unix.

Source

pathStr

Str pathStr()

Convenience for uri.pathStr.

Source

plus

abstract File plus(Uri path, Bool checkSlash := true)

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`)

Source

readAllBuf

Buf readAllBuf()

Convenience for in.readAllBuf. The input stream is guaranteed to be closed.

Source

readAllLines

Str[] readAllLines()

Convenience for in.readAllLines. The input stream is guaranteed to be closed.

Source

readAllStr

Str readAllStr(Bool normalizeNewlines := true)

Convenience for in.readAllStr. The input stream is guaranteed to be closed.

Source

readObj

Obj readObj(Str:Obj options := null)

Convenience for in.readObj The input stream is guaranteed to be closed.

Source

readProps

Str:Str readProps()

Convenience for in.readProps(). The input stream is guaranteed to be closed.

Source

rename

virtual File rename(Str newName)

Renaming this file within its current directory. It is a convenience for:

return this.moveTo(parent + newName)

Source

sep

static Str sep

Return the platform's separator for names within in a path: backslash on Windows, forward slash on Unix.

Source

size

abstract Int size()

Return the size of the file in bytes otherwise null if a directory or unknown.

Source

toStr

override Str toStr()

Return uri.toStr.

Source

uri

Uri uri()

Return the Uri path used to create this File. This Uri may be absolute or relative.

Source

walk

virtual Void walk(|File| c)

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.

Source

writeObj

Void writeObj(Obj obj, Str:Obj options := null)

Convenience for out.writeObj The output stream is guaranteed to be closed.

Source

writeProps

Void writeProps(Str:Str props)

Convenience for out.writeProps(). The output stream is guaranteed to be closed.

Source