# WinNTFileSystem

Extends \Win32FileSystem

FileSystem for Windows NT/2000.

You should also use this class as a template to write your local implementation Some native PHP filesystem specific methods are abstracted here as well. Anyway you must always use this methods via a PhingFile object (that by nature uses the *FileSystem drivers to access the real filesystem via this class using natives.

FIXME:

- Error handling reduced to min fallthrough runtime exceptions more precise errorhandling is done by the PhingFile class

package | phing.system.io

### Methods

## __construct

    __construct()

inherited

## _access

    _access( $path) : boolean

inherited

throws |

### Arguments

#### $path

``

### Response

`boolean`

## private

    _driveIndex( $d) : integer

inherited

### Arguments

#### $d

``

### Response

`integer`

## _getDrive

    _getDrive( $path) : null|string

inherited

### Arguments

#### $path

``

### Response

`null|string`

## _getDriveDirectory

    _getDriveDirectory( $drive) : null

inherited

### Arguments

#### $drive

``

### Response

`null`

## _getUserPath

    _getUserPath() : string

inherited

### Response

`string`

## private

    _isPharArchive( $strPath) : boolean

inherited

### Arguments

#### $strPath

``

### Response

`boolean`

## _nativeListRoots

    _nativeListRoots()

inherited

## Whether file can be deleted.

    canDelete(\PhingFile $f) : boolean

inherited

### Arguments

#### $f

`\PhingFile`

### Response

`boolean`

## canonicalize filename by checking on disk

    canonicalize(string $strPath) : mixed

inherited

### Arguments

#### $strPath

`string`

### Response

`mixed`

Canonical path or false if the file doesn't exist.

## Check whether the file or directory denoted by the given abstract pathname may be accessed by this process. If the second argument is false, then a check for read access is made; if the second argument is true, then a check for write (not read-write) access is made. Return false if access is denied or an I/O error occurs.

    checkAccess(\PhingFile $f, boolean $write = false) : boolean

inherited

### Arguments

#### $f

`\PhingFile`

#### $write

`boolean`

### Response

`boolean`

## Change the group on a file or directory.

    chgrp(string $pathname, string $group) : void

inherited

throws | if operation failed.

### Arguments

#### $pathname

`string`

Path and name of file or directory.

#### $group

`string`

The group of the file or directory. See http://us.php.net/chgrp

## Change the permissions on a file or directory.

    chmod(string $pathname, integer $mode) : void

inherited

throws | if operation failed.

### Arguments

#### $pathname

`string`

Path and name of file or directory.

#### $mode

`integer`

The mode (permissions) of the file or directory. If using octal add leading 0. eg. 0777. Mode is affected by the umask system setting.

## Change the ownership on a file or directory.

    chown(string $pathname, string $user) : void

inherited

throws | if operation failed.

### Arguments

#### $pathname

`string`

Path and name of file or directory.

#### $user

`string`

The user name or number of the file or directory. See http://us.php.net/chown

## Compare two abstract pathnames lexicographically.

    compare(\PhingFile $f1, \PhingFile $f2)

inherited

throws |

### Arguments

#### $f1

`\PhingFile`

#### $f2

`\PhingFile`

## Compare the modified time of two files.

    compareMTimes(string $file1, string $file2) : integer

inherited

throws | if cannot get modified time of either file.

### Arguments

#### $file1

`string`

Path and name of file1.

#### $file2

`string`

Path and name of file2.

### Response

`integer`

1 if file1 is newer. -1 if file2 is newer. 0 if files have the same time. Err object on failure.

## Copy a file.

    copy(\PhingFile $src, \PhingFile $dest) : void

inherited

throws | if file cannot be copied.

### Arguments

#### $src

`\PhingFile`

Source path and name file to copy.

#### $dest

`\PhingFile`

Destination path and name of new file.

## Copy a file, or recursively copy a folder and its contents

    copyr(string $source, string $dest) : boolean

inherited

author | Aidan Lister aidan@php.net
version | 1.0.1
link | http://aidanlister.com/repos/v/function.copyr.php

### Arguments

#### $source

`string`

Source path

#### $dest

`string`

Destination path

### Response

`boolean`

Returns TRUE on success, FALSE on failure

## Create a new directory denoted by the given abstract pathname, returning true if and only if the operation succeeds.

    createDirectory(\PhingFile &$f, integer $mode = 493) : boolean

inherited

NOTE: umask() is reset to 0 while executing mkdir(), and restored afterwards

### Arguments

#### $f

`\PhingFile`

#### $mode

`integer`

### Response

`boolean`

## Create a new empty file with the given pathname. Return true if the file was created and false if a file or directory with the given pathname already exists. Throw an IOException if an I/O error occurs.

    createNewFile(string $strPathname) : boolean

inherited

throws |

### Arguments

#### $strPathname

`string`

Path of the file to be created.

### Response

`boolean`

## Delete the file or directory denoted by the given abstract pathname, returning true if and only if the operation succeeds.

    delete(\PhingFile $f, boolean $recursive = false) : void

inherited

### Arguments

#### $f

`\PhingFile`

#### $recursive

`boolean`

## Arrange for the file or directory denoted by the given abstract pathname to be deleted when Phing::shutdown is called, returning true if and only if the operation succeeds.

    deleteOnExit(\PhingFile $f)

inherited

throws |

### Arguments

#### $f

`\PhingFile`

## Post-process the given URI path string if necessary. This is used on win32, e.g., to transform "/c:/foo" into "c:/foo". The path string still has slash separators; code in the PhingFile class will translate them after this method returns.

    fromURIPath(string $path)

inherited abstract

### Arguments

#### $path

`string`

## Return the simple boolean attributes for the file or directory denoted by the given abstract pathname, or zero if it does not exist or some other I/O error occurs.

    getBooleanAttributes(\PhingFile $f)

inherited

throws |

### Arguments

#### $f

`\PhingFile`

## Return the parent pathname string to be used when the parent-directory argument in one of the two-argument PhingFile constructors is the empty pathname.

    getDefaultParent()

inherited abstract

## Static method to return the FileSystem singelton representing this platform's local filesystem driver.

    getFileSystem() : \FileSystem

inherited static

throws |

### Response

`\FileSystem`

## Return the time at which the file or directory denoted by the given abstract pathname was last modified, or zero if it does not exist or some other I/O error occurs.

    getLastModifiedTime(\PhingFile $f) : integer

inherited

throws |

### Arguments

#### $f

`\PhingFile`

### Response

`integer`

## Return the length in bytes of the file denoted by the given abstract pathname, or zero if it does not exist, is a directory, or some other I/O error occurs.

    getLength(\PhingFile $f) : integer

inherited

throws |

### Arguments

#### $f

`\PhingFile`

### Response

`integer`

## Return the local filesystem's path-separator character.

    getPathSeparator()

inherited abstract

## Return the local filesystem's name-separator character.

    getSeparator()

inherited abstract

## Tell whether or not the given abstract pathname is absolute.

    isAbsolute(\PhingFile $f)

inherited abstract

### Arguments

#### $f

`\PhingFile`

## isLetter

    isLetter( $c) : boolean

inherited

### Arguments

#### $c

``

### Response

`boolean`

## isSlash

    isSlash( $c) : boolean

inherited

### Arguments

#### $c

``

### Response

`boolean`

## List the elements of the directory denoted by the given abstract pathname. Return an array of strings naming the elements of the directory if successful; otherwise, return <code>null</code>.

    listDir(\PhingFile $f) : array

inherited

### Arguments

#### $f

`\PhingFile`

### Response

`array`

## returns the contents of a directory in an array

    lister( $f) : array

inherited

throws |

### Arguments

#### $f

``

### Response

`array`

## List the available filesystem roots, return array of PhingFile objects

    listRoots()

inherited

throws |

## Locks a file and throws an Exception if this is not possible.

    lock(\PhingFile $f) : void

inherited

throws |

### Arguments

#### $f

`\PhingFile`

## Convert the given pathname string to normal form. If the string is already in normal form then it is simply returned.

    normalize(string $strPath)

inherited abstract

### Arguments

#### $strPath

`string`

## A normal Win32 pathname contains no duplicate slashes, except possibly for a UNC prefix, and does not end with a slash. It may be the empty string. Normalized Win32 pathnames have the convenient property that the length of the prefix almost uniquely identifies the type of the path and whether it is absolute or relative:

    normalizePrefix( $strPath,  $len,  &$sb) : integer

inherited

0 relative to both drive and directory 1 drive-relative (begins with '\') 2 absolute UNC (if first char is '\'), else directory-relative (has form "z:foo") 3 absolute local pathname (begins with "z:\")

### Arguments

#### $strPath

``

#### $len

``

#### $sb

``

### Response

`integer`

## Normalize the given pathname, whose length is len, starting at the given offset; everything before this offset is already normal.

    normalizer( $strPath,  $len,  $offset) : string

inherited

### Arguments

#### $strPath

``

#### $len

``

#### $offset

``

### Response

`string`

## Compute the length of this pathname string's prefix. The pathname string must be in normal form.

    prefixLength(string $pathname)

inherited abstract

### Arguments

#### $pathname

`string`

## Rename the file or directory denoted by the first abstract pathname to the second abstract pathname, returning true if and only if the operation succeeds.

    rename(\PhingFile $f1, \PhingFile $f2) : void

inherited

throws | if rename cannot be performed

### Arguments

#### $f1

`\PhingFile`

abstract source file

#### $f2

`\PhingFile`

abstract destination file

## Resolve the child pathname string against the parent.

    resolve(string $parent, string $child)

inherited abstract

Both strings must be in normal form, and the result will be a string in normal form.

### Arguments

#### $parent

`string`

#### $child

`string`

## Resolve the given abstract pathname into absolute form. Invoked by the getAbsolutePath and getCanonicalPath methods in the PhingFile class.

    resolveFile(\PhingFile $f)

inherited abstract

### Arguments

#### $f

`\PhingFile`

## Delete an empty directory OR a directory and all of its contents.

    rmdir(string $dir, boolean $children = false) : void

inherited

throws |

### Arguments

#### $dir

`string`

Path and/or name of directory to delete.

#### $children

`boolean`

False: don't delete directory contents. True: delete directory contents.

## Set the last-modified time of the file or directory denoted by the given abstract pathname returning true if and only if the operation succeeds.

    setLastModifiedTime(\PhingFile $f, integer $time) : void

inherited

throws |

### Arguments

#### $f

`\PhingFile`

#### $time

`integer`

## Mark the file or directory denoted by the given abstract pathname as read-only, returning <code>true</code> if and only if the operation succeeds.

    setReadOnly(\PhingFile $f)

inherited

throws |

### Arguments

#### $f

`\PhingFile`

## slashify

    slashify( $p) : string

inherited

### Arguments

#### $p

``

### Response

`string`

## Symbolically link a file to another name.

    symlink(string $target, string $link) : void

inherited

Currently symlink is not implemented on Windows. Don't use if the application is to be portable.

throws |

### Arguments

#### $target

`string`

Path and/or name of file to link.

#### $link

`string`

Path and/or name of link to be created.

## Set the modification and access time on a file to the present time.

    touch(string $file, integer $time = null) : void

inherited

throws |

### Arguments

#### $file

`string`

Path and/or name of file to touch.

#### $time

`integer`

## Delete a file.

    unlink(string $file) : void

inherited

throws | if an error is encountered.

### Arguments

#### $file

`string`

Path and/or name of file to delete.

## Unlocks a file and throws an IO Error if this is not possible.

    unlock(\PhingFile $f) : void

inherited

throws |

### Arguments

#### $f

`\PhingFile`

### Constants

## BA_EXISTS

    BA_EXISTS

inherited

var |

## BA_REGULAR

    BA_REGULAR

inherited

var |

## BA_DIRECTORY

    BA_DIRECTORY

inherited

var |

## BA_HIDDEN

    BA_HIDDEN

inherited

var |

### Properties

## slash

    slash :

inherited

### Type(s)

``

## altSlash

    altSlash :

inherited

### Type(s)

``

## semicolon

    semicolon :

inherited

### Type(s)

``

## driveDirCache

    driveDirCache :

inherited static

### Type(s)

``

## Instance for getFileSystem() method.

    fs : \FileSystem

inherited static

var |

### Type(s)

`\FileSystem`