IO

object IO

A collection of File, URL, and I/O utility methods.

class Object
trait Matchable
class Any
IO.type

Value members

Concrete methods

def append(file: File, content: String, charset: Charset): Unit

Appends content to the existing contents of file using charset or UTF-8 if charset is not explicitly specified. If file does not exist, it is created, as are any parent directories.

Appends content to the existing contents of file using charset or UTF-8 if charset is not explicitly specified. If file does not exist, it is created, as are any parent directories.

def append(file: File, bytes: Array[Byte]): Unit

Appends bytes to the existing contents of file. If file does not exist, it is created, as are any parent directories.

Appends bytes to the existing contents of file. If file does not exist, it is created, as are any parent directories.

def asFile(url: URL): File

Converts the given URL to a File. If the URL is for an entry in a jar, the File for the jar is returned.

Converts the given URL to a File. If the URL is for an entry in a jar, the File for the jar is returned.

def assertAbsolute(f: File): Unit
def assertAbsolute(uri: URI): Unit
def assertDirectories(file: File*): Unit
def assertDirectory(file: File): Unit
def chgrp(group: String, file: File): Unit

An alias for setGroup. Updates the group owner of the file. This operation requires underlying filesystem to support IO.hasFileOwnerAttributeView.

An alias for setGroup. Updates the group owner of the file. This operation requires underlying filesystem to support IO.hasFileOwnerAttributeView.

def chmod(permissions: String, file: File): Unit

An alias for setPermissions. Updates permission of this file. This operation requires underlying filesystem to support IO.isPosix.

An alias for setPermissions. Updates permission of this file. This operation requires underlying filesystem to support IO.isPosix.

Value parameters:
permissions

Must be 9 character POSIX permission representation e.g. "rwxr-x---"

def chown(owner: String, file: File): Unit

An alias for setOwner. Updates the file owner. This operation requires underlying filesystem to support IO.hasFileOwnerAttributeView.

An alias for setOwner. Updates the file owner. This operation requires underlying filesystem to support IO.hasFileOwnerAttributeView.

def classLocation(cl: Class[_]): URL

Returns the URL to the directory, Java module, or the JAR file containing the class file cl. If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, a module will return a jrt URL such as jrt:/java.base.

Returns the URL to the directory, Java module, or the JAR file containing the class file cl. If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, a module will return a jrt URL such as jrt:/java.base.

def classLocation[A](implicit mf: Manifest[A]): URL

Returns the URL to the directory, Java module, or the JAR file containing the class file cl. If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, a module will return a jrt path.

Returns the URL to the directory, Java module, or the JAR file containing the class file cl. If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, a module will return a jrt path.

def classLocationFileOption(cl: Class[_]): Option[File]

Returns the directory, Java module, or the JAR containing the class file cl. If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, the returned module path cannot be expressed as File, so it will return None.

Returns the directory, Java module, or the JAR containing the class file cl. If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, the returned module path cannot be expressed as File, so it will return None.

def classLocationFileOption[A](implicit mf: Manifest[A]): Option[File]

Returns the directory, Java module, or the JAR containing the class file for type T (as determined by an implicit Manifest). If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, the returned module path cannot be expressed as File, so it will return None.

Returns the directory, Java module, or the JAR containing the class file for type T (as determined by an implicit Manifest). If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, the returned module path cannot be expressed as File, so it will return None.

def classLocationPath(cl: Class[_]): Path

Returns the NIO Path to the directory, Java module, or the JAR file containing the class file cl. If the location cannot be determined, an error is generated. Note that for JDK 11 onwards, a module will return a jrt path.

Returns the NIO Path to the directory, Java module, or the JAR file containing the class file cl. If the location cannot be determined, an error is generated. Note that for JDK 11 onwards, a module will return a jrt path.

def classLocationPath[A](implicit mf: Manifest[A]): Path

Returns a NIO Path to the directory, Java module, or the JAR file for type A (as determined by an implicit Manifest). If the location cannot be determined, an error is generated. Note that for JDK 11 onwards, a module will return a jrt path.

Returns a NIO Path to the directory, Java module, or the JAR file for type A (as determined by an implicit Manifest). If the location cannot be determined, an error is generated. Note that for JDK 11 onwards, a module will return a jrt path.

def classfileLocation[T](implicit mf: Manifest[T]): URL

Returns a URL for the classfile containing the given class file for type T (as determined by an implicit Manifest). If the location cannot be determined, an error is generated.

Returns a URL for the classfile containing the given class file for type T (as determined by an implicit Manifest). If the location cannot be determined, an error is generated.

def classfileLocation(cl: Class[_]): URL

Returns a URL for the classfile containing the given class If the location cannot be determined, an error is generated.

Returns a URL for the classfile containing the given class If the location cannot be determined, an error is generated.

def copy(sources: Iterable[(File, File)]): Set[File]
def copy(sources: Iterable[(File, File)], options: CopyOptions): Set[File]

For each pair in sources, copies the contents of the first File (the source) to the location of the second File (the target).

For each pair in sources, copies the contents of the first File (the source) to the location of the second File (the target).

See sbt.io.CopyOptions for docs on the options available.

Any parent directories that do not exist are created. The set of all target files is returned, whether or not they were updated by this method.

def copy(sources: Iterable[(File, File)], overwrite: Boolean, preserveLastModified: Boolean, preserveExecutable: Boolean): Set[File]
def copyDirectory(source: File, target: File): Unit
def copyDirectory(source: File, target: File, options: CopyOptions): Unit

Copies the contents of each file in the source directory to the corresponding file in the target directory.

Copies the contents of each file in the source directory to the corresponding file in the target directory.

See sbt.io.CopyOptions for docs on the options available.

Files in target without a corresponding file in source are left unmodified in any case. Any parent directories that do not exist are created.

def copyDirectory(source: File, target: File, overwrite: Boolean, preserveLastModified: Boolean, preserveExecutable: Boolean): Unit
def copyExecutable(sourceFile: File, targetFile: File): Unit

Transfers the executable property of sourceFile to targetFile.

Transfers the executable property of sourceFile to targetFile.

def copyFile(sourceFile: File, targetFile: File): Unit
def copyFile(sourceFile: File, targetFile: File, options: CopyOptions): Unit

Copies the contents of sourceFile to the location of targetFile, overwriting any existing content.

Copies the contents of sourceFile to the location of targetFile, overwriting any existing content.

See sbt.io.CopyOptions for docs on the options available.

def copyFile(sourceFile: File, targetFile: File, preserveLastModified: Boolean, preserveExecutable: Boolean): Unit
def copyLastModified(sourceFile: File, targetFile: File): Boolean

Transfers the last modified time of sourceFile to targetFile.

Transfers the last modified time of sourceFile to targetFile.

Note: this method has a special semantics if files are missing. In particular, if the source file is missing, it will silently set the target modification time to 1st January 1970, which corresponds to the Unix epoch.

The method returns true if the target file modification time was successfully changed, false otherwise.

The deprecated related method copyModifiedTime() has a somewhat different semantics, please refer to its documentation for additional details.

See also:

copyModifiedTime

def createDirectories(dirs: Iterable[File]): Unit

Creates directories dirs and all parent directories. It tries to work around a race condition in File.mkdirs() by retrying up to a limit.

Creates directories dirs and all parent directories. It tries to work around a race condition in File.mkdirs() by retrying up to a limit.

def createDirectory(dir: File): Unit

Creates directory dir and all parent directories. It tries to work around a race condition in File.mkdirs() by retrying up to a limit.

Creates directory dir and all parent directories. It tries to work around a race condition in File.mkdirs() by retrying up to a limit.

Creates a directory in the default temporary directory with a name generated from a random integer.

Creates a directory in the default temporary directory with a name generated from a random integer.

def createUniqueDirectory(baseDirectory: File): File

Creates a directory in baseDirectory with a name generated from a random integer

Creates a directory in baseDirectory with a name generated from a random integer

def defaultCharset: Charset

The default Charset used when not specified: UTF-8.

The default Charset used when not specified: UTF-8.

def delete(files: Iterable[File]): Unit

Deletes each file or directory (recursively) in files.

Deletes each file or directory (recursively) in files.

def delete(file: File): Unit

Deletes file, recursively if it is a directory. Note that this method may silently fail to delete the file (or directory) if any errors occur.

Deletes file, recursively if it is a directory. Note that this method may silently fail to delete the file (or directory) if any errors occur.

def deleteFilesEmptyDirs(files: Iterable[File]): Unit

Deletes each file or directory in files recursively. Any empty parent directories are deleted, recursively.

Deletes each file or directory in files recursively. Any empty parent directories are deleted, recursively.

def deleteIfEmpty(dirs: Set[File]): Unit

Deletes all empty directories in the set. Any non-empty directories are ignored.

Deletes all empty directories in the set. Any non-empty directories are ignored.

def directoryURI(dir: File): URI

Converts an absolute File to a URI. The File is converted to a URI (toURI), normalized (normalize), encoded (toASCIIString), and a forward slash ('/') is appended to the path component if it does not already end with a slash.

Converts an absolute File to a URI. The File is converted to a URI (toURI), normalized (normalize), encoded (toASCIIString), and a forward slash ('/') is appended to the path component if it does not already end with a slash.

def directoryURI(uri: URI): URI

Converts an absolute File to a URI. The File is converted to a URI (toURI), normalized (normalize), encoded (toASCIIString), and a forward slash ('/') is appended to the path component if it does not already end with a slash.

Converts an absolute File to a URI. The File is converted to a URI (toURI), normalized (normalize), encoded (toASCIIString), and a forward slash ('/') is appended to the path component if it does not already end with a slash.

def foldLines[T](in: BufferedReader, init: T)(f: (T, String) => T): T

Applies f to each line read from in and the accumulated value of type T, with initial value init. This method does not close in.

Applies f to each line read from in and the accumulated value of type T, with initial value init. This method does not close in.

def foreachLine(in: BufferedReader)(f: String => Unit): Unit

Applies f to each line read from in. This method does not close in.

Applies f to each line read from in. This method does not close in.

def getModifiedTimeOrZero(file: File): Long

Return the last modification timestamp of the specified file, in milliseconds since the Unix epoch (January 1, 1970 UTC).

Return the last modification timestamp of the specified file, in milliseconds since the Unix epoch (January 1, 1970 UTC).

If the specified file does not exist, this method will return 0L.

The deprecated method getModifiedTime() has similar semantics, but will throw an exception if the file does not exist. Please refer to its documentation for additional details.

See also:

getModifiedTime

def gunzip(in: File, out: File): Unit

Gunzips the file 'in' and writes it to 'out'. 'in' cannot be the same file as 'out'.

Gunzips the file 'in' and writes it to 'out'. 'in' cannot be the same file as 'out'.

def gunzip(input: InputStream, output: OutputStream): Unit

Gunzips the InputStream 'input' and writes it to 'output'. Neither stream is closed.

Gunzips the InputStream 'input' and writes it to 'output'. Neither stream is closed.

def gzip(in: File, out: File): Unit

Gzips the file 'in' and writes it to 'out'. 'in' cannot be the same file as 'out'.

Gzips the file 'in' and writes it to 'out'. 'in' cannot be the same file as 'out'.

def gzip(input: InputStream, output: OutputStream): Unit

Gzips the InputStream 'in' and writes it to 'output'. Neither stream is closed.

Gzips the InputStream 'in' and writes it to 'output'. Neither stream is closed.

def gzipFileIn[T](file: File)(f: InputStream => T): T

Applies f to a buffered gzip InputStream for file. The streams involved are opened before calling f and closed after it returns. The result is the result of f.

Applies f to a buffered gzip InputStream for file. The streams involved are opened before calling f and closed after it returns. The result is the result of f.

def gzipFileOut[T](file: File)(f: OutputStream => T): T

Applies f to a buffered gzip OutputStream for file. The streams involved are opened before calling f and closed after it returns. The result is the result of f.

Applies f to a buffered gzip OutputStream for file. The streams involved are opened before calling f and closed after it returns. The result is the result of f.

def isPosix: Boolean

Returns true if the filesystem supports POSIX file attribute view.

Returns true if the filesystem supports POSIX file attribute view.

def jar(sources: Iterable[(File, String)], outputJar: File, manifest: Manifest, time: Option[Long]): Unit

Creates a jar file.

Creates a jar file.

Value parameters:
manifest

The manifest for the jar.

outputJar

The file to write the jar to.

sources

The files to include in the jar file paired with the entry name in the jar. Only the pairs explicitly listed are included.

time

static timestamp to use for all entries, if any, in milliseconds since Epoch

def listFiles(filter: FileFilter)(dir: File): Array[File]

Returns the children of directory dir that match filter in a non-null array.

Returns the children of directory dir that match filter in a non-null array.

def listFiles(dir: File, filter: FileFilter): Array[File]

Returns the children of directory dir that match filter in a non-null array.

Returns the children of directory dir that match filter in a non-null array.

def listFiles(dir: File): Array[File]

Returns the children of directory dir in a non-null array.

Returns the children of directory dir in a non-null array.

def load(properties: Properties, from: File): Unit

Reads the properties in from into properties. If from does not exist, properties is left unchanged.

Reads the properties in from into properties. If from does not exist, properties is left unchanged.

def move(files: Iterable[(File, File)]): Unit

For each pair in files, moves the contents of the first File to the location of the second. See sbt.io.IO$.move(java.io.File,java.io.File):Unit for the behavior of the individual move operations.

For each pair in files, moves the contents of the first File to the location of the second. See sbt.io.IO$.move(java.io.File,java.io.File):Unit for the behavior of the individual move operations.

def move(a: File, b: File): Unit

Moves the contents of a to the location specified by b. This method deletes any content already at b and creates any parent directories of b if they do not exist. It will first try File.renameTo and if that fails, resort to copying and then deleting the original file. In either case, the original File will not exist on successful completion of this method.

Moves the contents of a to the location specified by b. This method deletes any content already at b and creates any parent directories of b if they do not exist. It will first try File.renameTo and if that fails, resort to copying and then deleting the original file. In either case, the original File will not exist on successful completion of this method.

def objectInputStream(wrapped: InputStream, loader: ClassLoader): ObjectInputStream

Constructs an ObjectInputStream on wrapped that uses loader to load classes. See also issue 136.

Constructs an ObjectInputStream on wrapped that uses loader to load classes. See also issue 136.

def parseClasspath(s: String): Seq[File]

Parses a classpath String into File entries according to the current platform's path separator.

Parses a classpath String into File entries according to the current platform's path separator.

def pathSplit(s: String): Array[String]

Splits a String around the platform's path separator characters.

Splits a String around the platform's path separator characters.

def read(file: File, charset: Charset): String

Reads the full contents of file into a String using charset or UTF-8 if charset is not explicitly specified.

Reads the full contents of file into a String using charset or UTF-8 if charset is not explicitly specified.

def readBytes(file: File): Array[Byte]

Reads the full contents of in into a byte array.

Reads the full contents of in into a byte array.

def readBytes(in: InputStream): Array[Byte]

Reads the full contents of in into a byte array. This method does not close in.

Reads the full contents of in into a byte array. This method does not close in.

def readLines(file: File, charset: Charset): List[String]

Reads all of the lines in file using the provided charset or UTF-8 if charset is not explicitly specified.

Reads all of the lines in file using the provided charset or UTF-8 if charset is not explicitly specified.

def readLines(in: BufferedReader): List[String]

Reads all of the lines from in. This method does not close in.

Reads all of the lines from in. This method does not close in.

def readLinesURL(url: URL, charset: Charset): List[String]

Reads all of the lines from url using the provided charset or UTF-8 if charset is not explicitly specified.

Reads all of the lines from url using the provided charset or UTF-8 if charset is not explicitly specified.

def readStream(in: InputStream, charset: Charset): String

Reads the full contents of in into a byte array. This method does not close in.

Reads the full contents of in into a byte array. This method does not close in.

def reader[T](file: File, charset: Charset)(f: BufferedReader => T): T
def relativize(base: File, file: File): Option[String]

Returns the path for file relative to directory base or None if base is not a parent of file. If file or base are not absolute, they are first resolved against the current working directory.

Returns the path for file relative to directory base or None if base is not a parent of file. If file or base are not absolute, they are first resolved against the current working directory.

def relativizeFile(base: File, file: File): Option[File]

Returns the relative file for file relative to directory base or None if base is not a parent of file. If file or base are not absolute, they are first resolved against the current working directory.

Returns the relative file for file relative to directory base or None if base is not a parent of file. If file or base are not absolute, they are first resolved against the current working directory.

def resolve(base: File, f: File): File

Resolves f against base, which must be an absolute directory. The result is guaranteed to be absolute. If f is absolute, it is returned without changes.

Resolves f against base, which must be an absolute directory. The result is guaranteed to be absolute. If f is absolute, it is returned without changes.

def setGroup(file: File, group: String): Unit

Updates the group owner of the file. This operation requires underlying filesystem to support IO.hasFileOwnerAttributeView.

Updates the group owner of the file. This operation requires underlying filesystem to support IO.hasFileOwnerAttributeView.

def setModifiedTimeOrFalse(file: File, mtime: Long): Boolean

Sets the modification time of the file argument, in milliseconds since the Unix epoch (January 1, 1970 UTC).

Sets the modification time of the file argument, in milliseconds since the Unix epoch (January 1, 1970 UTC).

If the specified file does not exist, this method will return false. It will return true if the file modification time was successfully changed.

The deprecated method setModifiedTime() has similar semantics, but will throw an exception if the file does not exist. Please refer to its documentation for additional details.

This method may not work correctly if mtime is negative.

See also:

setModifiedTime

def setOwner(file: File, owner: String): Unit

Updates the file owner. This operation requires underlying filesystem to support IO.hasFileOwnerAttributeView.

Updates the file owner. This operation requires underlying filesystem to support IO.hasFileOwnerAttributeView.

def setPermissions(file: File, permissions: String): Unit

Updates permission of this file. This operation requires underlying filesystem to support IO.isPosix.

Updates permission of this file. This operation requires underlying filesystem to support IO.isPosix.

Value parameters:
permissions

Must be 9 character POSIX permission representation e.g. "rwxr-x---"

def split(name: String): (String, String)

Splits the given string into base and extension strings. If name contains no period, the base string is the input string and the extension is the empty string. Otherwise, the base is the substring up until the last period (exclusive) and the extension is the substring after the last period.

Splits the given string into base and extension strings. If name contains no period, the base string is the input string and the extension is the empty string. Otherwise, the base is the substring up until the last period (exclusive) and the extension is the substring after the last period.

For example, split("Build.scala") == ("Build", "scala")

def stash[T](files: Set[File])(f: => T): T

Move the provided files to a temporary location. If 'f' returns normally, delete the files. If 'f' throws an Exception, return the files to their original location.

Move the provided files to a temporary location. If 'f' returns normally, delete the files. If 'f' throws an Exception, return the files to their original location.

def toFile(url: URL): File

Constructs a File corresponding to url, which must have a scheme of file. This method properly works around an issue with a simple conversion to URI and then to a File.

Constructs a File corresponding to url, which must have a scheme of file. This method properly works around an issue with a simple conversion to URI and then to a File.

On Windows this can accept the following patterns of URLs:

val u0 = new URL("file:C:\\Users\\foo/.sbt/preloaded"), val u1 = new URL("file:/C:\\Users\\foo/.sbt/preloaded"), val u2 = new URL("file://unc/Users/foo/.sbt/preloaded"), val u3 = new URL("file:///C:\\Users\\foo/.sbt/preloaded"), and val u4 = new URL("file:////unc/Users/foo/.sbt/preloaded").

def toFile(uri: URI): File
def toURI(f: File): URI

Converts the given File to a URI. If the File is relative, the URI is relative, unlike File.toURI

Converts the given File to a URI. If the File is relative, the URI is relative, unlike File.toURI

def touch(files: Iterable[File]): Unit

Each input file in files is created if it doesn't exist. If a file already exists, the last modified time is set to the current time. It is not guaranteed that all files will have the same last modified time after this call.

Each input file in files is created if it doesn't exist. If a file already exists, the last modified time is set to the current time. It is not guaranteed that all files will have the same last modified time after this call.

def touch(file: File, setModified: Boolean): Unit

Creates a file at the given location if it doesn't exist. If the file already exists and setModified is true, this method sets the last modified time to the current time.

Creates a file at the given location if it doesn't exist. If the file already exists and setModified is true, this method sets the last modified time to the current time.

def transfer(in: File, out: File): Unit

Copies the contents of in to out.

Copies the contents of in to out.

def transfer(in: File, out: OutputStream): Unit

Copies the contents of the input file in to the out stream. The output stream is not closed by this method.

Copies the contents of the input file in to the out stream. The output stream is not closed by this method.

def transfer(in: InputStream, to: File): Unit

Copies all bytes from the given input stream to the given File. The input stream is not closed by this method.

Copies all bytes from the given input stream to the given File. The input stream is not closed by this method.

def transfer(in: InputStream, out: OutputStream): Unit

Copies all bytes from the given input stream to the given output stream. Neither stream is closed.

Copies all bytes from the given input stream to the given output stream. Neither stream is closed.

def transferAndClose(in: InputStream, out: OutputStream): Unit

Copies all bytes from the given input stream to the given output stream. The input stream is closed after the method completes.

Copies all bytes from the given input stream to the given output stream. The input stream is closed after the method completes.

def unzip(from: File, toDirectory: File, filter: NameFilter, preserveLastModified: Boolean): Set[File]
def unzipStream(from: InputStream, toDirectory: File, filter: NameFilter, preserveLastModified: Boolean): Set[File]
def unzipURL(from: URL, toDirectory: File, filter: NameFilter, preserveLastModified: Boolean): Set[File]
def urlAsFile(url: URL): Option[File]
def withTemporaryDirectory[T](action: File => T, keepDirectory: Boolean): T

Creates a temporary directory and provides its location to the given function. The directory is deleted after the function returns if keepDirectory is set to false.

Creates a temporary directory and provides its location to the given function. The directory is deleted after the function returns if keepDirectory is set to false.

def withTemporaryDirectory[T](action: File => T): T

Overload of withTemporaryDirectory with keepDirectory set to false.

Overload of withTemporaryDirectory with keepDirectory set to false.

def withTemporaryFile[T](prefix: String, postfix: String, keepFile: Boolean)(action: File => T): T

Creates a file in the default temporary directory, calls action with the file, deletes the file if keepFile is set to true, and returns the result of calling action. The name of the file will begin with prefix, which must be at least three characters long, and end with postfix, which has no minimum length.

Creates a file in the default temporary directory, calls action with the file, deletes the file if keepFile is set to true, and returns the result of calling action. The name of the file will begin with prefix, which must be at least three characters long, and end with postfix, which has no minimum length.

def withTemporaryFile[T](prefix: String, postfix: String)(action: File => T): T

Overload of withTemporaryFile with keepFile set to false.

Overload of withTemporaryFile with keepFile set to false.

def write(file: File, content: String, charset: Charset, append: Boolean): Unit

Writes content to file using charset or UTF-8 if charset is not explicitly specified. If append is false, the existing contents of file are overwritten. If append is true, the new content is appended to the existing contents. If file or any parent directories do not exist, they are created.

Writes content to file using charset or UTF-8 if charset is not explicitly specified. If append is false, the existing contents of file are overwritten. If append is true, the new content is appended to the existing contents. If file or any parent directories do not exist, they are created.

def write(file: File, bytes: Array[Byte]): Unit

Writes bytes to file, overwriting any existing content. If any parent directories do not exist, they are first created.

Writes bytes to file, overwriting any existing content. If any parent directories do not exist, they are first created.

def write(properties: Properties, label: String, to: File): Unit

Writes properties to the File to, using label as the comment on the first line. If any parent directories of to do not exist, they are first created.

Writes properties to the File to, using label as the comment on the first line. If any parent directories of to do not exist, they are first created.

def writeLines(file: File, lines: Seq[String], charset: Charset, append: Boolean): Unit

Writes lines to file using the given charset or UTF-8 if charset is not explicitly specified. If append is false, the contents of the file are overwritten. If append is true, the lines are appended to the file. A newline is written after each line and NOT before the first line. If any parent directories of file do not exist, they are first created.

Writes lines to file using the given charset or UTF-8 if charset is not explicitly specified. If append is false, the contents of the file are overwritten. If append is true, the lines are appended to the file. A newline is written after each line and NOT before the first line. If any parent directories of file do not exist, they are first created.

def writeLines(writer: PrintWriter, lines: Seq[String]): Unit

Writes lines to writer using writer's println method.

Writes lines to writer using writer's println method.

def writer[T](file: File, content: String, charset: Charset, append: Boolean)(f: BufferedWriter => T): T
def zip(sources: Iterable[(File, String)], outputZip: File, time: Option[Long]): Unit

Creates a zip file.

Creates a zip file.

Value parameters:
outputZip

The file to write the zip to.

sources

The files to include in the zip file paired with the entry name in the zip. Only the pairs explicitly listed are included.

time

static timestamp to use for all entries, if any.

Deprecated methods

@deprecated("classLocationFile may not work on JDK 11. Use classfileLocation, classLocationFileOption, or classLocationPath instead.", "1.3.0")
def classLocationFile(cl: Class[_]): File

Returns the directory, Java module, or the JAR file containing the class file cl. If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, the returned module path cannot be expressed as File.

Returns the directory, Java module, or the JAR file containing the class file cl. If the location cannot be determined or it is not a file, an error is generated. Note that for JDK 11 onwards, the returned module path cannot be expressed as File.

Deprecated
@deprecated("classLocationFile may not work on JDK 11. Use classfileLocation, classLocationFileOption, or classLocationPath instead.", "1.3.0")
def classLocationFile[T](implicit mf: Manifest[T]): File

Returns the directory, Java module, or the JAR file containing the class file for type T (as determined by an implicit Manifest). If the location cannot be determined, an error is generated. Note that for JDK 11 onwards, the returned module path cannot be expressed as File.

Returns the directory, Java module, or the JAR file containing the class file for type T (as determined by an implicit Manifest). If the location cannot be determined, an error is generated. Note that for JDK 11 onwards, the returned module path cannot be expressed as File.

Deprecated
@deprecated("This method might be removed in the future, also see copyLastModified()", "1.1.3")
def copyModifiedTime(fromFile: File, toFile: File): Unit

Copies the last modification time of fromFile to toFile, with a highest precision possible, by using native code when available.

Copies the last modification time of fromFile to toFile, with a highest precision possible, by using native code when available.

This method copies the timestamps with the highest possible precision offered by the native calls of this system for the filesystem in use. That could be in the region of nanoseconds. It is therefore more precise than using separate getModifiedTime()/setModifiedTime() calls, which will round timestamps to whole milliseconds.

If the timestamp cannot be copied, this method will throw a FileNotFoundException or an IOException, as appropriate.

This method was added in sbt/io v1.1.2, but it may be replaced in the future by a similar method that returns a Try, rather than throwing an exception. It is therefore marked as deprecated, since we cannot guarantee that it will remain available in future versions.

See also:

getModifiedTime

setModifiedTime

Deprecated
@deprecated("This method might be removed in the future, also see getModifiedOrZero()", "1.1.3")
def getModifiedTime(file: File): Long

Return the last modification timestamp of the specified file, in milliseconds since the Unix epoch (January 1, 1970 UTC). This method will use whenever possible native code in order to return a timestamp with a 1-millisecond precision.

Return the last modification timestamp of the specified file, in milliseconds since the Unix epoch (January 1, 1970 UTC). This method will use whenever possible native code in order to return a timestamp with a 1-millisecond precision.

This is in contrast to lastModified() in java.io.File, and to getLastModifiedTime() in java.nio.file.Files, which on many implementations of the JDK prior to JDK 10 will return timestamps with 1-second precision.

If native code support is not available for the JDK/OS in use, this method will revert to the Java calls. Currently supported systems are Linux 64/32 bits, Windows, and OSX, all on Intel hardware.

Please note that even on those platforms, not all filesystems support sub-second timestamp resolutions. For instance, ext2/3, FAT, and HFS+ all have a one second resolution or higher for modification times. Conversely, ext4, NTFS, and APFS all support at least millisecond resolution, or finer.

If the file does not exist, or if it impossible to obtain the modification time because of access permissions of other reasons, this method will throw a FileNotFoundException or an IOException, as appropriate. This is the same behavior as the nio code in Files.getLastModifiedTime(). However note that, in contrast, Java's traditional lastModified() in java.io.File will return zero if an error occurs.

If you do not wish to use native calls, please define the property "sbt.io.jdktimestamps" to "true" (or anything other than "false"), and Java's get/setLastModifiedTime() will be used instead. This setting applies to setModifiedTime() and copyModifiedTime() as well.

This method was added in sbt/io v1.1.2, but it may be replaced in the future by a similar method that returns a Try, rather than throwing an exception. It is therefore marked as deprecated, since we cannot guarantee that it will remain available in future versions.

See also:

setModifiedTime

copyModifiedTime

Deprecated
@deprecated("Please specify whether to use a static timestamp", "1.3.2")
def jar(sources: Iterable[(File, String)], outputJar: File, manifest: Manifest): Unit
Deprecated
@deprecated("This method might be removed in the future, also see setModifiedTimeOrFalse()", "1.1.3")
def setModifiedTime(file: File, mtime: Long): Unit

Sets the modification time of the file argument, in milliseconds since the Unix epoch (January 1, 1970 UTC). This method will use native code whenever possible in order to achieve a subsecond precision. Please see getModifiedTime() for further information. If it is impossible to set the modification time, the code will throw a FileNotFoundException or an IOException, as appropriate. This is similar to Files.setLastModifiedTime(). Note that, in contrast, Java's traditional setLastModified() will return a boolean false value if an error occurs.

Sets the modification time of the file argument, in milliseconds since the Unix epoch (January 1, 1970 UTC). This method will use native code whenever possible in order to achieve a subsecond precision. Please see getModifiedTime() for further information. If it is impossible to set the modification time, the code will throw a FileNotFoundException or an IOException, as appropriate. This is similar to Files.setLastModifiedTime(). Note that, in contrast, Java's traditional setLastModified() will return a boolean false value if an error occurs.

This method may not work correctly if mtime is negative.

This method was added in sbt/io v1.1.2, but it may be replaced in the future by a similar method that returns a Try, rather than throwing an exception. It is therefore marked as deprecated, since we cannot guarantee that it will remain available in future versions.

See also:

getModifiedTime

copyModifiedTime

Deprecated
@deprecated("Please specify whether to use a static timestamp", "1.3.2")
def zip(sources: Iterable[(File, String)], outputZip: File): Unit
Deprecated

Concrete fields

val Newline: String

The newline string for this system, as obtained by the line.separator system property.

The newline string for this system, as obtained by the line.separator system property.

lazy val hasAclFileAttributeView: Boolean

Returns true if the filesystem supports ACL file attribute view.

Returns true if the filesystem supports ACL file attribute view.

lazy val hasBasicFileAttributeView: Boolean

Returns true if the filesystem supports basic file attribute view.

Returns true if the filesystem supports basic file attribute view.

lazy val hasDosFileAttributeView: Boolean

Returns true if the filesystem supports DOS file attribute view.

Returns true if the filesystem supports DOS file attribute view.

lazy val hasFileOwnerAttributeView: Boolean

Returns true if the filesystem supports file owner attribute view.

Returns true if the filesystem supports file owner attribute view.

lazy val hasPosixFileAttributeView: Boolean

Returns true if the filesystem supports POSIX file attribute view.

Returns true if the filesystem supports POSIX file attribute view.

Returns true if the filesystem supports user-defined file attribute view.

Returns true if the filesystem supports user-defined file attribute view.

val utf8: Charset