API for accessing hierarchical file systems. Clients use
Path
s to obtain Resource
s representing files or
directories.
Path
contains many useful operations for manipulating
paths:
value path = parsePath("/Users/Trompon/Documents"); value child = path.childPath("hello.txt"); value sibling = child.siblingPath("goodbye.txt"); value parent = path.parent;
The attribute resource of Path
is used
to obtain a Resource
. It is usually necessary to narrow a
Resource
to one of the following enumerated subtypes
before performing operations on it:
File
contains data,Directory
contains other resources,Link
is a symbolic link to another resource, orNil
is an unoccupied location in the filesystem
where a resource may safely be created.To create a file named hello.txt
in the home directory,
we could do the following:
value filePath = home.childPath("hello.txt"); if (is Nil loc = filePath.resource) { value file = loc.createFile(); try (writer = file.Overwriter()) { writer.writeLine("Hello, World!"); } } else { print("file already exists"); }
Note the difference between a File.Overwriter
, which
destroys the existing contents of the file, if any, and a
File.Appender
, which leaves them intact.
To print the contents of the file we just created, we could do this:
value filePath = home.childPath("hello.txt"); if (is File file = filePath.resource) { try (reader = file.Reader()) { print(reader.readLine()); } } else { print("file does not exist"); }
Now, to rename the file:
value filePath = home.childPath("hello.txt"); if (is File file = filePath.resource) { value newPath = filePath.siblingPath("goodbye.txt"); if (is Nil loc = newPath.resource) { file.move(loc); } else { print("target file already exists"); } } else { print("source file does not exist"); }
To list the contents of a directory, we have two possibilities. We can list just the direct contents:
if (is Directory dir = home.resource) { for (path in dir.childPaths()) { print(path); } } else { print("directory does not exist"); }
Alternatively, we can create a Visitor
that walks the
whole directory tree rooted at a given path:
object visitor extends Visitor() { file(File file) => print(file.path); } home.visit(visitor);
File systems other than the default file system are
supported. For example, a file system for a zip file may be
created using the convenience function createZipFileSystem()
.
value zipPath = home.childPath("myzip.zip"); if (is Nil|File loc = zipPath.resource) { value zipSystem = createZipFileSystem(loc); value entryPath = zipSystem.parsePath("/hello.txt"); if (is Nil entry = entryPath.resource) { value filePath = home.childPath("hello.txt"); if (is File file = filePath.resource) { file.copy(entry); } else { print("source file does not exist"); } } else { print("entry already exists"); } zipSystem.close(); }
Packages | |
ceylon.file | Public API for the file system module. |
Dependencies | ||
ceylon.collection | 1.2.2 | |
java.base | 8 |
Public API for the file system module.
Aliases | |
Attribute | Source Codeshared Attribute=> String[2] A view-name, attribute-name pair that identifies a file
system attribute, for example See also BasicFileAttributeView |
Values | |
current | Source Codeshared Path current The |
defaultSystem | Source Codeshared defaultSystem defaultSystem A |
home | Source Codeshared Path home The |
rootDirectories | Source Codeshared Directory[] rootDirectories The See also defaultSystem |
rootPaths | Source Codeshared Path[] rootPaths The See also defaultSystem |
stores | Source Codeshared Store[] stores The See also defaultSystem |
temporaryDirectory | Source Codeshared Directory temporaryDirectory The system default temporary directory. |
Functions | |
createFileIfNil | Source Codeshared File createFileIfNil(File|Nil res) |
createSystem | Source Codeshared System createSystem(String uriString, <String->String>[] properties) Create a Parameters:
|
createZipFileSystem | Source Codeshared System createZipFileSystem(File|Nil file, String encoding = ...) Create a Parameters:
|
forEachLine | Source Codeshared void forEachLine(File file, void do(String line)) Call the given function for each line of text in the given file. For example, to print the contents of the file: forEachLine(file, print); Or: forEachLine(file, (line) { print(line); }); |
lines | Source Codeshared String[] lines(File file) All lines of text in the given file. |
parsePath | Source Codeshared Path parsePath(String pathString) Obtain a See also defaultSystem |
parseURI | Source Codeshared Path parseURI(String uriString) Obtain a See also System |
readAndAppendLines | Source Codeshared void readAndAppendLines(File from, File to, String replacing(String line) = ...) Copy lines from one file to a second file, appending to the second file. |
readAndOverwriteLines | Source Codeshared void readAndOverwriteLines(File from, File to, String replacing(String line) = ...) Copy lines from one file to a second file, overwriting the second file. |
sameFile | Source Codeshared Boolean sameFile(File x, File y) Determines if the two given |
Interfaces | |
Directory | Source Codeshared Directory Represents a directory in a hierarchical file system. |
ExistingResource | Source Codeshared ExistingResource A resource that actually exists—that is one that is
not |
File | Source Codeshared File Represents a file in a hierarchical file system. |
Link | Source Codeshared Link Represents a symbolic link. |
Nil | Source Codeshared Nil Represents the absence of any existing file or directory at a certain path in a hierarchical file system. |
Path | Source Codeshared Path Represents a path in a hierarchical file system. A path is a sequence of path elements. A path may be an absolute path that begins at the root of the file system, or a relative path. |
Reader | Source Codeshared Reader Reads lines of text from a |
Resource | Source Codeshared Resource Represents a file, link, or directory located at a certain path, or the absence of a file or directory at that path. |
Store | Source Codeshared Store Represents a file system store. |
System | Source Codeshared System Represents a special-purpose file system. |
Writer | Source Codeshared Writer Writes text to a |
Classes | |
Visitor | Source Codeshared Visitor A file visitor. |
defaultSystem | Source Codeshared defaultSystem A |
Exceptions | |
NoSuchPrincipalException | Source Codeshared NoSuchPrincipalException Thrown if there is no principal with the specified name. |