AbstractFile

dotty.tools.io.AbstractFile
See theAbstractFile companion object
abstract class AbstractFile extends Iterable[AbstractFile]

This class and its children serve to unify handling of files and directories. These files and directories may or may not have some real counter part within the file system. For example, some file handles reference files within a zip archive or virtual ones that exist only in memory.

Every abstract file has a path (i.e. a full name) and a name (i.e. a short name) and may be backed by some real File. There are two different kinds of abstract files: regular files and directories. Regular files may be read and have a last modification time. Directories may list their content and look for subfiles with a specified name or path and of a specified kind.

The interface does not allow to access the content. The class symtab.classfile.AbstractFileReader accesses bytes, knowing that the character set of classfiles is UTF-8. For all other cases, the class SourceFile is used, which honors global.settings.encoding.value.

''Note: This library is considered experimental and should not be used unless you know what you are doing.''

Attributes

Companion
object
Graph
Supertypes
Known subtypes
class PlainFile
class JarArchive
class VirtualFile
class Entry
class DirEntry
class ZipArchive
Show all

Members list

Value members

Abstract methods

The absolute file, if this is a relative file.

The absolute file, if this is a relative file.

Attributes

Returns the containing directory of this abstract file

Returns the containing directory of this abstract file

Attributes

def create(): Unit

Create a file on disk, if one does not exist already.

Create a file on disk, if one does not exist already.

Attributes

def delete(): Unit

Delete the underlying file or directory (recursively).

Delete the underlying file or directory (recursively).

Attributes

returns an input stream so the file can be read

returns an input stream so the file can be read

Attributes

Is this abstract file a directory?

Is this abstract file a directory?

Attributes

Returns all abstract subfiles of this abstract directory.

Returns all abstract subfiles of this abstract directory.

Attributes

def jpath: JPath

Returns the underlying Path if any and null otherwise.

Returns the underlying Path if any and null otherwise.

Attributes

Returns the time that this abstract file was last modified.

Returns the time that this abstract file was last modified.

Attributes

def lookupName(name: String, directory: Boolean): AbstractFile

Returns the abstract file in this abstract directory with the specified name. If there is no such file, returns null. The argument directory tells whether to look for a directory or a regular file.

Returns the abstract file in this abstract directory with the specified name. If there is no such file, returns null. The argument directory tells whether to look for a directory or a regular file.

Attributes

Returns an abstract file with the given name. It does not check that it exists.

Returns an abstract file with the given name. It does not check that it exists.

Attributes

def name: String

Returns the name of this abstract file.

Returns the name of this abstract file.

Attributes

Returns an output stream for writing the file

Returns an output stream for writing the file

Attributes

def path: String

Returns the path of this abstract file.

Returns the path of this abstract file.

Attributes

Concrete methods

Returns the absolute path of this abstract file.

Returns the absolute path of this abstract file.

Attributes

Returns a buffered output stream for writing the file - defaults to out

Returns a buffered output stream for writing the file - defaults to out

Attributes

Returns the path of this abstract file in a canonical form.

Returns the path of this abstract file in a canonical form.

Attributes

Does this abstract file denote an existing file?

Does this abstract file denote an existing file?

Attributes

def file: JFile

Returns the underlying File if any and null otherwise.

Returns the underlying File if any and null otherwise.

Attributes

Get the file in this directory with the given name, creating an empty file if it does not already existing.

Get the file in this directory with the given name, creating an empty file if it does not already existing.

Attributes

def hasExtension(other: String): Boolean

Checks extension case insensitively. TODO: change to enum

Checks extension case insensitively. TODO: change to enum

Attributes

Does this abstract file represent something which can contain classfiles?

Does this abstract file represent something which can contain classfiles?

Attributes

Does this abstract file correspond to something on-disk?

Does this abstract file correspond to something on-disk?

Attributes

final def lookupPath(parts: Seq[String], directory: Boolean): AbstractFile

Drill down through subdirs looking for the target, as in lookupName. Ths target name is the last of parts.

Drill down through subdirs looking for the target, as in lookupName. Ths target name is the last of parts.

Attributes

Return an abstract file that does not check that path denotes an existing file.

Return an abstract file that does not check that path denotes an existing file.

Attributes

final def resolveSibling(name: String): AbstractFile | Null

Returns the sibling abstract file in the parent of this abstract file or directory. If there is no such file, returns null.

Returns the sibling abstract file in the parent of this abstract file or directory. If there is no such file, returns null.

Attributes

size of this file if it is a concrete file.

size of this file if it is a concrete file.

Attributes

Get the subdirectory with a given name, creating it if it does not already exist.

Get the subdirectory with a given name, creating it if it does not already exist.

Attributes

Returns contents of file (if applicable) in a byte array.

Returns contents of file (if applicable) in a byte array.

Attributes

Returns contents of file (if applicable) in a Char array. warning: use Global.getSourceFile() to use the proper encoding when converting to the char array.

Returns contents of file (if applicable) in a Char array. warning: use Global.getSourceFile() to use the proper encoding when converting to the char array.

Attributes

override def toString(): String

Returns the path of this abstract file.

Returns the path of this abstract file.

Attributes

Definition Classes
Iterable -> Any
def toURL: URL

An underlying source, if known. Mostly, a zip/jar file.

An underlying source, if known. Mostly, a zip/jar file.

Attributes

Inherited methods

final def ++[B >: AbstractFile](suffix: IterableOnce[B]): Iterable[B]

Attributes

Inherited from:
IterableOps
final def addString(b: StringBuilder): b.type

Attributes

Inherited from:
IterableOnceOps
final def addString(b: StringBuilder, sep: String): b.type

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps
override def empty: Iterable[AbstractFile]

Attributes

Definition Classes
Inherited from:
IterableFactoryDefaults

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps
def fold[A1 >: AbstractFile](z: A1)(op: (A1, A1) => A1): A1

Attributes

Inherited from:
IterableOnceOps
def foldLeft[B](z: B)(op: (B, AbstractFile) => B): B

Attributes

Inherited from:
IterableOnceOps
def foldRight[B](z: B)(op: (AbstractFile, B) => B): B

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps
def foreach[U](f: AbstractFile => U): Unit

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps
def groupMap[K, B](key: AbstractFile => K)(f: AbstractFile => B): Map[K, Iterable[B]]

Attributes

Inherited from:
IterableOps
def groupMapReduce[K, B](key: AbstractFile => K)(f: AbstractFile => B)(reduce: (B, B) => B): Map[K, B]

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOnceOps
override def isTraversableAgain: Boolean

Attributes

Definition Classes
Inherited from:
IterableOps

Attributes

Inherited from:
Iterable
def knownSize: Int

Attributes

Inherited from:
IterableOnce

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps
def lazyZip[B](that: Iterable[B]): LazyZip2[AbstractFile, B, Iterable.this.type]

Attributes

Inherited from:
Iterable
def map[B](f: AbstractFile => B): Iterable[B]

Attributes

Inherited from:
IterableOps
def max[B >: AbstractFile](implicit ord: Ordering[B]): AbstractFile

Attributes

Inherited from:
IterableOnceOps
def maxBy[B](f: AbstractFile => B)(implicit ord: Ordering[B]): AbstractFile

Attributes

Inherited from:
IterableOnceOps
def maxByOption[B](f: AbstractFile => B)(implicit ord: Ordering[B]): Option[AbstractFile]

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps
def min[B >: AbstractFile](implicit ord: Ordering[B]): AbstractFile

Attributes

Inherited from:
IterableOnceOps
def minBy[B](f: AbstractFile => B)(implicit ord: Ordering[B]): AbstractFile

Attributes

Inherited from:
IterableOnceOps
def minByOption[B](f: AbstractFile => B)(implicit ord: Ordering[B]): Option[AbstractFile]

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps
final def mkString: String

Attributes

Inherited from:
IterableOnceOps
final def mkString(sep: String): String

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps
def product[B >: AbstractFile](implicit num: Numeric[B]): B

Attributes

Inherited from:
IterableOnceOps
def reduce[B >: AbstractFile](op: (B, B) => B): B

Attributes

Inherited from:
IterableOnceOps
def reduceLeft[B >: AbstractFile](op: (B, AbstractFile) => B): B

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps
def reduceOption[B >: AbstractFile](op: (B, B) => B): Option[B]

Attributes

Inherited from:
IterableOnceOps
def reduceRight[B >: AbstractFile](op: (AbstractFile, B) => B): B

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps
protected def reversed: Iterable[AbstractFile]

Attributes

Inherited from:
IterableOnceOps
def scan[B >: AbstractFile](z: B)(op: (B, B) => B): Iterable[B]

Attributes

Inherited from:
IterableOps
def scanLeft[B](z: B)(op: (B, AbstractFile) => B): Iterable[B]

Attributes

Inherited from:
IterableOps
def scanRight[B](z: B)(op: (AbstractFile, B) => B): Iterable[B]

Attributes

Inherited from:
IterableOps
def size: Int

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps
final def sizeIs: SizeCompareOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Definition Classes
Inherited from:
IterableOps
def stepper[S <: Stepper[_]](implicit shape: StepperShape[AbstractFile, S]): S

Attributes

Inherited from:
IterableOnce
def sum[B >: AbstractFile](implicit num: Numeric[B]): B

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps
override def tapEach[U](f: AbstractFile => U): Iterable[AbstractFile]

Attributes

Definition Classes
Inherited from:
IterableOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps
final def toBuffer[B >: AbstractFile]: Buffer[B]

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps
def toMap[K, V](implicit ev: AbstractFile <:< (K, V)): Map[K, V]

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps
def toSet[B >: AbstractFile]: Set[B]

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOnceOps

Attributes

Inherited from:
IterableOps
def unzip[A1, A2](implicit asPair: AbstractFile => (A1, A2)): (Iterable[A1], Iterable[A2])

Attributes

Inherited from:
IterableOps
def unzip3[A1, A2, A3](implicit asTriple: AbstractFile => (A1, A2, A3)): (Iterable[A1], Iterable[A2], Iterable[A3])

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps
def zipAll[A1 >: AbstractFile, B](that: Iterable[B], thisElem: A1, thatElem: B): Iterable[(A1, B)]

Attributes

Inherited from:
IterableOps

Attributes

Inherited from:
IterableOps

Deprecated and Inherited methods

Attributes

Deprecated
[Since version 2.13.0] Use ++ instead of ++: for collections of type Iterable
Inherited from:
IterableOps
final def /:[B](z: B)(op: (B, AbstractFile) => B): B

Attributes

Deprecated
[Since version 2.13.0] Use foldLeft instead of /:
Inherited from:
IterableOnceOps
final def :\[B](z: B)(op: (AbstractFile, B) => B): B

Attributes

Deprecated
[Since version 2.13.0] Use foldRight instead of :\\
Inherited from:
IterableOnceOps
def aggregate[B](z: => B)(seqop: (B, AbstractFile) => B, combop: (B, B) => B): B

Attributes

Deprecated
[Since version 2.13.0] `aggregate` is not relevant for sequential collections. Use `foldLeft(z)(seqop)` instead.
Inherited from:
IterableOnceOps

Attributes

Deprecated
[Since version 2.13.0] Use iterableFactory instead
Inherited from:
IterableOps
final def copyToBuffer[B >: AbstractFile](dest: Buffer[B]): Unit

Attributes

Deprecated
[Since version 2.13.0] Use `dest ++= coll` instead
Inherited from:
IterableOnceOps

Attributes

Deprecated
[Since version 2.13.0] Check .knownSize instead of .hasDefiniteSize for more actionable information (see scaladoc for details)
Inherited from:
IterableOnceOps
final def repr: Iterable[AbstractFile]

Attributes

Deprecated
[Since version 2.13.0] Use coll instead of repr in a collection implementation, use the collection value itself from the outside
Inherited from:
IterableOps
def seq: Iterable.this.type

Attributes

Deprecated
[Since version 2.13.0] Iterable.seq always returns the iterable itself
Inherited from:
Iterable
final def toIterable: Iterable.this.type

Attributes

Deprecated
[Since version 2.13.7] toIterable is internal and will be made protected; its name is similar to `toList` or `toSeq`, but it doesn\'t copy non-immutable collections
Inherited from:
Iterable

Attributes

Deprecated
[Since version 2.13.0] Use .iterator instead of .toIterator
Inherited from:
IterableOnceOps

Attributes

Deprecated
[Since version 2.13.0] Use .to(LazyList) instead of .toStream
Inherited from:
IterableOnceOps

Attributes

Deprecated
[Since version 2.13.0] toTraversable is internal and will be made protected; its name is similar to `toList` or `toSeq`, but it doesn\'t copy non-immutable collections
Inherited from:
IterableOps

Attributes

Deprecated
[Since version 2.13.0] Use .view.slice(from, until) instead of .view(from, until)
Inherited from:
IterableOps

Concrete fields

Returns the extension of this abstract file. TODO: store as an enum to avoid costly comparisons

Returns the extension of this abstract file. TODO: store as an enum to avoid costly comparisons

Attributes