Difference between revisions of "File Module"
m (Text replacement - "'''Signatures'''" to "'''Signature'''") |
|||
Line 46: | Line 46: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:list( | |<pre>file:list( | ||
$dir as xs:string | $dir as xs:string | ||
Line 74: | Line 74: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:children( | |<pre>file:children( | ||
$dir as xs:string | $dir as xs:string | ||
Line 98: | Line 98: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:descendants( | |<pre>file:descendants( | ||
$dir as xs:string | $dir as xs:string | ||
Line 122: | Line 122: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:read-binary( | |<pre>file:read-binary( | ||
$path as xs:string | $path as xs:string | ||
Line 144: | Line 144: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:read-text( | |<pre>file:read-text( | ||
$path as xs:string | $path as xs:string | ||
Line 168: | Line 168: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:read-text-lines( | |<pre>file:read-text-lines( | ||
$path as xs:string | $path as xs:string | ||
Line 193: | Line 193: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:create-dir( | |<pre>file:create-dir( | ||
$dir as xs:string | $dir as xs:string | ||
Line 209: | Line 209: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:create-temp-dir( | |<pre>file:create-temp-dir( | ||
$prefix as xs:string | $prefix as xs:string | ||
Line 227: | Line 227: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:create-temp-file( | |<pre>file:create-temp-file( | ||
$prefix as xs:string | $prefix as xs:string | ||
Line 245: | Line 245: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:delete( | |<pre>file:delete( | ||
$path as xs:string | $path as xs:string | ||
Line 262: | Line 262: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:write( | |<pre>file:write( | ||
$path as xs:string | $path as xs:string | ||
Line 297: | Line 297: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:write-binary( | |<pre>file:write-binary( | ||
$path as xs:string | $path as xs:string | ||
Line 315: | Line 315: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:write-text( | |<pre>file:write-text( | ||
$path as xs:string | $path as xs:string | ||
Line 333: | Line 333: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:write-text-lines( | |<pre>file:write-text-lines( | ||
$path as xs:string | $path as xs:string | ||
Line 351: | Line 351: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:append( | |<pre>file:append( | ||
$path as xs:string | $path as xs:string | ||
Line 369: | Line 369: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:append-binary( | |<pre>file:append-binary( | ||
$path as xs:string | $path as xs:string | ||
Line 386: | Line 386: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:append-text( | |<pre>file:append-text( | ||
$path as xs:string | $path as xs:string | ||
Line 404: | Line 404: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:append-text-lines( | |<pre>file:append-text-lines( | ||
$path as xs:string | $path as xs:string | ||
Line 422: | Line 422: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:copy( | |<pre>file:copy( | ||
$source as xs:string | $source as xs:string | ||
Line 439: | Line 439: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:move( | |<pre>file:move( | ||
$source as xs:string | $source as xs:string | ||
Line 468: | Line 468: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:exists( | |<pre>file:exists( | ||
$path as xs:string | $path as xs:string | ||
Line 481: | Line 481: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:is-dir( | |<pre>file:is-dir( | ||
$path as xs:string | $path as xs:string | ||
Line 494: | Line 494: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:is-absolute( | |<pre>file:is-absolute( | ||
$path as xs:string | $path as xs:string | ||
Line 507: | Line 507: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:is-file( | |<pre>file:is-file( | ||
$path as xs:string | $path as xs:string | ||
Line 520: | Line 520: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:last-modified( | |<pre>file:last-modified( | ||
$path as xs:string | $path as xs:string | ||
Line 536: | Line 536: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:size( | |<pre>file:size( | ||
$path as xs:string | $path as xs:string | ||
Line 554: | Line 554: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:name( | |<pre>file:name( | ||
$path as xs:string | $path as xs:string | ||
Line 568: | Line 568: | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:parent( | |<pre>file:parent( | ||
$path as xs:string | $path as xs:string | ||
Line 585: | Line 585: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:path-to-native( | |<pre>file:path-to-native( | ||
$path as xs:string | $path as xs:string | ||
Line 601: | Line 601: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:resolve-path( | |<pre>file:resolve-path( | ||
$path as xs:string | $path as xs:string | ||
Line 624: | Line 624: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:path-to-uri( | |<pre>file:path-to-uri( | ||
$path as xs:string | $path as xs:string | ||
Line 639: | Line 639: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|{{Code|'''file:dir-separator'''() as xs:string}}<br/> | |{{Code|'''file:dir-separator'''() as xs:string}}<br/> | ||
|- valign="top" | |- valign="top" | ||
Line 650: | Line 650: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|{{Code|'''file:path-separator'''() as xs:string}}<br/> | |{{Code|'''file:path-separator'''() as xs:string}}<br/> | ||
|- valign="top" | |- valign="top" | ||
Line 661: | Line 661: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:line-separator() as xs:string</pre> | |<pre>file:line-separator() as xs:string</pre> | ||
|- valign="top" | |- valign="top" | ||
Line 672: | Line 672: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:temp-dir() as xs:string</pre> | |<pre>file:temp-dir() as xs:string</pre> | ||
|- valign="top" | |- valign="top" | ||
Line 683: | Line 683: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:current-dir() as xs:string</pre> | |<pre>file:current-dir() as xs:string</pre> | ||
|- valign="top" | |- valign="top" | ||
Line 694: | Line 694: | ||
{| width='100%' | {| width='100%' | ||
|- valign="top" | |- valign="top" | ||
− | | width='120' | ''' | + | | width='120' | '''Signature''' |
|<pre>file:base-dir() as xs:string?</pre> | |<pre>file:base-dir() as xs:string?</pre> | ||
|- valign="top" | |- valign="top" |
Revision as of 15:03, 9 March 2023
This XQuery Module contains functions related to file system operations, such as listing, reading, or writing files.
This module is based on the EXPath File Module. The following enhancements have not been added to the specification yet:
Function | Description |
---|---|
file:descendants
|
new function |
file:is-absolute
|
new function |
file:read-text , file:read-text-lines
|
$fallback argument added
|
file:read-text-lines
|
$offset and $length arguments added
|
file:resolve-path
|
$base argument added
|
Contents
Conventions
All functions and errors in this module are assigned to the http://expath.org/ns/file
namespace, which is statically bound to the file
prefix.
For serialization parameters, the http://www.w3.org/2010/xslt-xquery-serialization
namespace is used, which is statically bound to the output
prefix.
The error invalid-path
is raised if a path is invalid.
File Paths
- All file paths are resolved against the current working directory (the directory from which BaseX or, more generally, the Java Virtual Machine, was started). This directory can be retrieved via
file:base-dir
.
- A path can be specified as local filesystem path or as file URI.
- Returned strings that refer to existing directories are suffixed with a directory separator.
Read Operations
file:list
Signature | file:list( $dir as xs:string $recursive as xs:boolean := () $pattern as xs:string := () ) as xs:string* |
Summary | Lists all files and directories found in the specified $dir . The returned paths are relative to the provided path.The optional parameter $recursive specifies whether subdirectories will be traversed, too.The optional parameter $pattern defines a file name pattern in the Glob Syntax. If present, only those files and directories are returned that correspond to the pattern. Several patterns can be separated with a comma (, ). |
Errors | not-found : the specified file does not exist.no-dir : the specified path does not point to a directory.io-error : the operation fails for some other reason. |
Examples | .txt} files located in a specific directory and its subdirectories:
<syntaxhighlight lang="xquery"> let $root := 'path/to/files/' for $file in file:list($root, true(), '*.txt') let $path := $root || $file where file:size($path) > 1000000 return file:read-text($path) </syntaxhighlight> |
file:children
Signature | file:children( $dir as xs:string ) as xs:string* |
Summary | Returns the full paths to all files and directories found in the specified $dir .The inverse function is file:parent . The returned paths start with the specified directory. The related function file:list returns relative file paths.
|
Errors | not-found : the specified file does not exist.no-dir : the specified path does not point to a directory.io-error : the operation fails for some other reason. |
Examples | Return the contents of large .txt files located in a specific directory:
<syntaxhighlight lang="xquery"> for $file in file:children('path/to/files/') where matches($file, '.txt', 'i') and file:size($file) > 1000000 return file:read-text($$file) </syntaxhighlight> |
file:descendants
Signature | file:descendants( $dir as xs:string ) as xs:string* |
Summary | Returns the full paths to all files and directories found in the specified $dir and its subdirectories.. The returned paths start with the specified directory. The related function file:list creates relative file paths.
|
Errors | not-found : the specified file does not exist.no-dir : the specified path does not point to a directory.io-error : the operation fails for some other reason. |
Examples | Return the contents of all .txt files located in a specific directory and its subdirectories:
<syntaxhighlight lang="xquery"> for $file in file:descendants('path/to/files/') where matches($file, '.txt', 'i') and file:size($file) > 1000000 return file:read-text($$file) </syntaxhighlight> |
file:read-binary
Signature | file:read-binary( $path as xs:string $offset as xs:integer := () $length as xs:integer := () ) as xs:base64Binary |
Summary | Reads the binary content of the file specified by $path and returns it as lazy xs:base64Binary item.The optional parameters $offset and $length can be used to read chunks of a file.
|
Errors | not-found : the specified file does not exist.is-dir : the specified path is a directory.out-of-range : the offset or length is negative, or the chosen values would exceed the file bounds.io-error : the operation fails for some other reason. |
Examples |
|
file:read-text
Signature | file:read-text( $path as xs:string $encoding as xs:string := () $fallback as xs:boolean := () ) as xs:string |
Summary | Reads the textual contents of the file specified by $path and returns it as lazy xs:string item:
|
Errors | not-found : the specified file does not exist.is-dir : the specified path is a directory.unknown-encoding : the specified encoding is not supported, or unknown.io-error : the operation fails for some other reason.
|
Examples |
|
file:read-text-lines
Signature | file:read-text-lines( $path as xs:string $encoding as xs:string := () $fallback as xs:boolean := () $offset as xs:integer := () $length as xs:integer := () ) as xs:string* |
Summary | Reads the textual contents of the file specified by $path and returns it as a sequence of xs:string items:
The lines to be read can be restricted with the optional parameters |
Errors | not-found : the specified file does not exist.is-dir : the specified path is a directory.unknown-encoding : the specified encoding is not supported, or unknown.io-error : the operation fails for some other reason. |
Write Operations
file:create-dir
Signature | file:create-dir( $dir as xs:string ) as empty-sequence() |
Summary | Creates the directory specified by $dir if it does not already exist. Non-existing parent directories will be created as well. |
Errors | exists : the specified target exists, but is no directory.io-error : the operation fails for some other reason. |
file:create-temp-dir
Signature | file:create-temp-dir( $prefix as xs:string $suffix as xs:string $dir as xs:string := () ) as xs:string |
Summary | Creates a new temporary directory that did not exist before this function was called, and returns its full file path. The directory name begins and ends with the specified $prefix and $suffix . If no directory is specified via $dir , the directory will be placed in the system’s default temporary directory. The operation will create all non-existing parent directories.
|
Errors | no-dir : the specified directory points to a file.io-error : the directory could not be created.
|
file:create-temp-file
Signature | file:create-temp-file( $prefix as xs:string $suffix as xs:string $dir as xs:string := () ) as xs:string |
Summary | Creates a new temporary file that did not exist before this function was called, and returns its full file path. The file name begins and ends with the specified $prefix and $suffix . If no directory is specified via $dir , the file will be placed in the system’s default temporary directory. The operation will create all non-existing parent directories.
|
Errors | no-dir : the specified directory points to a file.io-error : the directory could not be created.
|
file:delete
Signature | file:delete( $path as xs:string $recursive as xs:boolean := () ) as empty-sequence() |
Summary | Recursively deletes a file or directory specified by $path .The optional parameter $recursive specifies whether subdirectories will be deleted, too. |
Errors | not-found : the specified path does not exist.io-error : the operation fails for some other reason. |
file:write
Signature | file:write( $path as xs:string $items as item()* $params as item() := () ) as empty-sequence() |
Summary | Writes a serialized sequence of items to the specified file. If the file already exists, it will be overwritten. The $params argument contains serialization parameters. As with fn:serialize(), the parameters can be specified
<syntaxhighlight lang="xml"> <output:serialization-parameters> <output:method value='xml'/> <output:cdata-section-elements value="div"/> ... </output:serialization-parameters> </syntaxhighlight>
<syntaxhighlight lang="xquery"> map { "method": "xml", "cdata-section-elements": "div", ... } </syntaxhighlight> |
Errors | no-dir : the parent of specified path is no directory.is-dir : the specified path is a directory.io-error : the operation fails for some other reason. |
Examples |
|
file:write-binary
Signature | file:write-binary( $path as xs:string $value as xs:anyAtomicType $offset as xs:integer := () ) as empty-sequence() |
Summary | Writes a binary item (xs:base64Binary, xs:hexBinary) to the specified file. If the file already exists, it will be overwritten. If $offset is specified, data will be written at this file position. An existing file may be resized by that operation.
|
Errors | no-dir : the parent of specified path is no directory.is-dir : the specified path is a directory.out-of-range : the offset is negative, or it exceeds the current file size.io-error : the operation fails for some other reason. |
file:write-text
Signature | file:write-text( $path as xs:string $value as xs:string $encoding as xs:string := () ) as empty-sequence() |
Summary | Writes a string to the specified file. If the file already exists, it will be overwritten. The optional parameter $encoding defines the output encoding (default: UTF-8). |
Errors | no-dir : the parent of specified path is no directory.is-dir : the specified path is a directory.unknown-encoding : the specified encoding is not supported, or unknown.io-error : the operation fails for some other reason. |
file:write-text-lines
Signature | file:write-text-lines( $path as xs:string $values as xs:string* $encoding as xs:string := () ) as empty-sequence() |
Summary | Writes a sequence of strings to the specified file, each followed by the system specific newline character. If the file already exists, it will be overwritten. The optional parameter $encoding defines the output encoding (default: UTF-8). |
Errors | no-dir : the parent of specified path is no directory.is-dir : the specified path is a directory.unknown-encoding : the specified encoding is not supported, or unknown.io-error : the operation fails for some other reason. |
file:append
Signature | file:append( $path as xs:string $items as item()* $params as item() := () ) as empty-sequence() |
Summary | Appends a serialized sequence of items to the specified file. If the file does not exists, a new file is created. |
Errors | no-dir : the parent of specified path is no directory.is-dir : the specified path is a directory.io-error : the operation fails for some other reason. |
file:append-binary
Signature | file:append-binary( $path as xs:string $value as xs:anyAtomicType ) as empty-sequence() |
Summary | Appends a binary item (xs:base64Binary, xs:hexBinary) to the specified file. If the file does not exists, a new one is created. |
Errors | no-dir : the parent of specified path is no directory.is-dir : the specified path is a directory.io-error : the operation fails for some other reason. |
file:append-text
Signature | file:append-text( $path as xs:string $value as xs:string $encoding as xs:string := () ) as empty-sequence() |
Summary | Appends a string to a file specified by $path . If the specified file does not exists, a new file is created.The optional parameter $encoding defines the output encoding (default: UTF-8). |
Errors | no-dir : the parent of specified path is no directory.is-dir : the specified path is a directory.unknown-encoding : the specified encoding is not supported, or unknown.io-error : the operation fails for some other reason. |
file:append-text-lines
Signature | file:append-text-lines( $path as xs:string $values as xs:string* $encoding as xs:string := () ) as empty-sequence() |
Summary | Appends a sequence of strings to the specified file, each followed by the system specific newline character. If the specified file does not exists, a new file is created. The optional parameter $encoding defines the output encoding (default: UTF-8). |
Errors | no-dir : the parent of specified path is no directory.is-dir : the specified path is a directory.unknown-encoding : the specified encoding is not supported, or unknown.io-error : the operation fails for some other reason. |
file:copy
Signature | file:copy( $source as xs:string $target as xs:string ) as empty-sequence() |
Summary | Copies a file or directory specified by $source to the file or directory specified by $target . If the target file already exists, it will be overwritten. No operation will be performed if the source and target path are equal. |
Errors | not-found : the specified source does not exist.exists : the specified source is a directory and the target is a file.no-dir : the parent of the specified target is no directory.io-error : the operation fails for some other reason. |
file:move
Signature | file:move( $source as xs:string $target as xs:string ) as empty-sequence() |
Summary | Moves or renames the file or directory specified by $source to the path specified by $target . If the target file already exists, it will be overwritten. No operation will be performed if the source and target path are equal. |
Errors | not-found : the specified source does not exist.exists : the specified source is a directory and the target is a file.no-dir : the parent of the specified target is no directory.io-error : the operation fails for some other reason. |
Examples | When renaming a file, remember that relative file paths are resolved against the current working directory. Some ways to rename:
<syntaxhighlight lang="xquery"> file:move('/projects/new/octopus', '/projects/new/septimus') </syntaxhighlight> <syntaxhighlight lang="xquery"> $path ! file:move(., file:parent(.)||$newName) </syntaxhighlight> |
File Properties
file:exists
Signature | file:exists( $path as xs:string ) as xs:boolean |
Summary | Returns an xs:boolean indicating whether a file or directory specified by $path exists in the file system. |
file:is-dir
Signature | file:is-dir( $path as xs:string ) as xs:boolean |
Summary | Returns an xs:boolean indicating whether the argument $path points to an existing directory. |
file:is-absolute
Signature | file:is-absolute( $path as xs:string ) as xs:boolean |
Summary | Returns an xs:boolean indicating whether the argument $path is absolute.The behavior of this function depends on the operating system: On Windows, an absolute path starts with the drive letter and a colon, whereas on Linux it starts with a slash. |
file:is-file
Signature | file:is-file( $path as xs:string ) as xs:boolean |
Summary | Returns an xs:boolean indicating whether the argument $path points to an existing file. |
file:last-modified
Signature | file:last-modified( $path as xs:string ) as xs:dateTime |
Summary | Retrieves the timestamp of the last modification of the file or directory specified by $path . |
Errors | not-found : the specified path does not exist. |
file:size
Signature | file:size( $path as xs:string ) as xs:integer |
Summary | Returns the size, in bytes, of the file specified by $path , or 0 for directories. |
Errors | not-found : the specified file does not exist. |
Path Functions
file:name
Signature | file:name( $path as xs:string ) as xs:string |
Summary | Returns the name of a file or directory specified by $path . An empty string is returned if the path points to the root directory.
|
file:parent
Signature | file:parent( $path as xs:string ) as xs:string? |
Summary | Returns the absolute path to the parent directory of a file or directory specified by $path . An empty sequence is returned if the path points to a root directory.The inverse function is file:children . |
Examples |
|
file:path-to-native
Signature | file:path-to-native( $path as xs:string ) as xs:string |
Summary | Transforms the $path argument to its native representation on the operating system. |
Errors | not-found : the specified file does not exist.io-error : the specified path cannot be transformed to its native representation. |
file:resolve-path
Signature | file:resolve-path( $path as xs:string $base as xs:string := () ) as xs:string |
Summary | Transforms the $path argument to an absolute operating system path.If the path is relative, and if an absolute $base path is specified, it will be resolved against this path.
|
Errors | is-relative : the specified base path is relative. |
Examples | The following examples apply to Windows:
|
file:path-to-uri
Signature | file:path-to-uri( $path as xs:string ) as xs:string |
Summary | Transforms the path specified by $path into a URI with the file:// scheme. |
System Properties
file:dir-separator
Signature | file:dir-separator() as xs:string |
Summary | Returns the directory separator used by the operating system, such as / or \ . |
file:path-separator
Signature | file:path-separator() as xs:string |
Summary | Returns the path separator used by the operating system, such as ; or : . |
file:line-separator
Signature | file:line-separator() as xs:string |
Summary | Returns the line separator used by the operating system, such as , or . |
file:temp-dir
Signature | file:temp-dir() as xs:string |
Summary | Returns the system’s default temporary-file directory. |
file:current-dir
Signature | file:current-dir() as xs:string |
Summary | Returns the current working directory, i.e., the directory from which the query processor was started. This function returns the same result as the function call file:resolve-path("") .
|
file:base-dir
Signature | file:base-dir() as xs:string? |
Summary | Returns the parent directory of the static base URI. If the static base URI is undefined or does not point to a local resource, it returns the empty sequence. Otherwise, it returns the same result as file:parent(static-base-uri()) .
|
Errors
Code | Description |
---|---|
exists
|
A file with the same path already exists. |
invalid-path
|
A specified path is invalid. |
io-error
|
The operation fails for some other reason specific to the operating system. |
is-dir
|
The specified path is a directory. |
is-relative
|
The specified path is relative (and must be absolute). |
no-dir
|
The specified path does not point to a directory. |
not-found
|
A specified path does not exist. |
out-of-range
|
The specified offset or length is negative, or the chosen values would exceed the file bounds. |
unknown-encoding
|
The specified encoding is not supported, or unknown. |
Changelog
- Version 9.3
- Added:
file:descendants
- Version 9.0
- Updated:
file:read-text-lines
:$offset
and$length
arguments added.
- Version 8.5
- Updated:
file:read-text
,file:read-text-lines
:$fallback
argument added.
- Version 8.2
- Added:
file:is-absolute
- Updated:
file:resolve-path
: base argument added
- Version 8.0
- Added:
file:current-dir
,file:base-dir
,file:children
- Version 7.8
- Added:
file:parent
,file:name
- Updated: error codes;
file:read-binary
,file:write-binary
:$offset
and$length
arguments added. - Deleted: file:base-name, file:dir-name
- Version 7.7
- Added:
file:create-temp-dir
,file:create-temp-file
,file:temp-dir
- Updated: all returned strings that refer to existing directories will be suffixed with a directory separator.
- Version 7.3
- Added:
file:append-text
,file:write-text
,file:append-text-lines
,file:write-text-lines
,file:line-separator
- Aligned with latest specification: $file:directory-separator →
file:dir-separator
, $file:path-separator →file:path-separator
, file:is-directory →file:is-dir
, file:create-directory →file:create-dir
- Updated:
file:write-binary
,file:append-binary
: output limited to a single value
- Version 7.2.1
- Updated:
file:delete
:$recursive
parameter added to prevent subdirectories from being accidentally deleted. - Fixed:
file:list
now returns relative instead of absolute paths.