File Class
The File class offers a set of methods to working with files & directories. This can be done through
some helper methods or through a more advanced object oriented method where all files and directories are
wrapped in objects.
Usage
The File class's basic usage is through its helper methods which are listed below.
exists($path, $area = null)
Checks if a file exists. If $path points to a symlink, the symlinks are resolved to make sure whatever it points to is a file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the file to check |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
boolean true if the file in $path exists, false if not |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when an area is used and there is an extension violation.
|
Example |
$exists = File::exists(DOCROOT.'/test.txt');
|
create($basepath, $name, $contents = null, $area = null)
Create a file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$basepath |
required |
Location to create the new file in |
$name |
required |
Filename for the new file |
$contents |
null |
What to put into the new file |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
true |
Throws |
FileAccessException when the file already exists.
InvalidPathException when the basepath in not valid or not writable.
|
Example |
File::create(DOCROOT, 'test.txt', 'Contents for file.');
|
create_dir($basepath, $name, $chmod = 0777, $area = null)
Create a directory.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$basepath |
required |
Location to create the new directory in |
$name |
required |
Name for the new directory |
$chmod |
null |
Rights for the new directory |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
bool - the output of the mkdir() PHP function |
Throws |
InvalidPathException when the basepath does not exist or is not writable.
FileAccessException when the basepath is not writable.
|
Example |
File::create_dir(DOCROOT, 'test', 0755);
|
read($path, $as_string = false, $area = null)
Reads a file and returns it ($as_string == true) or adds it to the output ($as_string == false).
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the file to read |
$as_string |
false |
Makes it use readfile() on false or file_get_contents() on true |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
int|string - returns the number of bytes when $as_string was set to false or the file's
contents as a string when it was set to true.
|
Throws |
InvalidPathException when the file does not exist. |
Example |
// Returns 'Contents for file.' if you created the file in the example for File::create()
$file_content = File::read(DOCROOT.'test.txt', true);
|
read_dir($path, $depth = 0, $filter = null, $area = null)
Reads directory contents into an array.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the directory to read |
$depth |
0 |
How deep the subdirectories are recurred: 0 for unlimited, 1 for only the current
directory or specific number. |
$filter |
null |
A filter for which files to read: array() for all or null for
all but hidden. |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
array - a natural-case sorted array with subdirectories on top. Directories have a string key
with array value (or false when not read because of $depth limitation) and files are int indexed
with filename as value. All directories are suffixed with a directory separator. |
Throws |
InvalidPathException when the path not a directory.
FileAccessException when the path is not readable.
|
Example |
// Read a directory
$contents = File::read_dir(DOCROOT);
// Read with a limited dept
$contents = File::read_dir(DOCROOT, 2);
// Read with custom rules
$contents = File::read_dir(DOCROOT, 0, array(
'!^\.', // no hidden files/dirs
'!^private' => 'dir', // no private dirs
'\.png$' => 'file', // only get png's
'\.css$' => 'file', // or css files
'!^_', // exclude everything that starts with an underscore.
));
/**
* As you can see above, you can make
* rules directory or file specific by
* adding "=> 'file'" or "=> 'dir'"
* behind the rule.
*/
|
update($basepath, $name, $contents = null, $area = null)
Updates a file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$basepath |
required |
Location of the file to update |
$name |
required |
Filename for the file. If it does not exist, it will be created |
$contents |
null |
What to put into the file |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
true |
Throws |
InvalidPathException when the basepath not a directory or is not writable.
FileAccessException when there is no write access.
|
Example |
File::update(DOCROOT, 'test.txt', 'New contents for file.');
|
append($basepath, $name, $contents = null, $area = null)
Appends to an existing file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$basepath |
required |
Location of the file to append to |
$name |
required |
Filename for the file. This file has to exist |
$contents |
null |
What to add to the file |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
true |
Throws |
InvalidPathException when the basepath not a directory or is not writable.
FileAccessException when the file does not exist.
|
Example |
File::append(DOCROOT, 'test.txt', 'Additional contents for file.');
|
rename($path, $new_path, $source_area = null, $target_area = null)
Rename or move a directory or file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the file or directory to rename |
$new_path |
required |
New name of the file or directory |
$source_area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
$target_area |
null |
Optional Area object to use if $source_area does not contain $new_path, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
boolean result of rename() |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the filetype is not allowed.
|
Example |
// rename 'test.txt' to 'newname.txt', and move it to a sub-directory
File::rename(DOCROOT.'test.txt', DOCROOT.'folder/newname.txt');
// rename using a single area
File::rename(DOCROOT.'one.jpg', DOCROOT.'final.jpg', 'docroot');
// move and rename between two restrictive areas
File::rename(APPPATH.'tmp/file.jpg', DOCROOT.'folder/image.jpg', 'tmp', 'public');
|
rename_dir($path, $new_path, $source_area = null, $target_area = null)
Alias for File::rename
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the file or directory to rename |
$new_path |
required |
New name of the file or directory |
$source_area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
$target_area |
null |
Optional Area object to use if $source_area does not contain $new_path, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
boolean result of rename() |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the filetype is not allowed.
|
Example |
File::rename(DOCROOT.'/dirname', DOCROOT.'/newdirname');
|
copy($path, $new_path, $area = null, $source_area = null, $target_area = null)
Copies a file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the file to copy |
$new_path |
required |
Full path, including filename, to copy to |
$source_area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
$target_area |
null |
Optional Area object to use if $source_area does not contain $new_path, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
boolean result of copy() |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the filetype is not allowed.
InvalidPathException when the source path is not a file.
FileAccessException when the destination file already exists.
|
Example |
// copy the file 'test.txt' from the docroot to a sub directory
File::copy(DOCROOT.'test.txt', DOCROOT.'folder/test.txt');
// copy using a single area
File::copy(DOCROOT.'one.jpg', DOCROOT.'img/one.jpg', 'public');
// copy between two restrictive areas
File::copy(APPPATH.'tmp/1.jpg', DOCROOT.'folder/1.jpg', 'tmp', 'public');
|
copy_dir($path, $new_path, $area = null, $source_area = null, $target_area = null)
Copies a directory.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the directory to copy |
$new_path |
required |
Path to copy to |
$source_area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
$target_area |
null |
Optional Area object to use if $source_area does not contain $new_path, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
null |
Throws |
OutsideAreaException when a path not inside the file area.
InvalidPathException when the source path is not a directory.
FileAccessException when the destination directory already exists.
|
Example |
File::copy_dir(DOCROOT.'/test', DOCROOT.'/newname');
|
delete($path, $area = null)
Deletes a file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the file to delete |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
boolean result of unlink() |
Throws |
OutsideAreaException when a path not inside the file area.
InvalidPathException when the source path is not a file.
|
Example |
File::delete(DOCROOT.'/test.txt');
|
delete_dir($path, $recursive = true, $delete_top = true, $area = null)
Deletes a file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the directory to delete |
$recursive |
true |
Whether to also delete contents of subdirectories |
$delete_top |
true |
whether to delete the parent dir itself when empty |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
boolean result of unlink() or true when not deleting content of subdirectories |
Throws |
OutsideAreaException when a path not inside the file area.
InvalidPathException when the source path is not a directory.
FileAccessException when something went wrong during the delete process.
|
Example |
File::delete_dir(DOCROOT.'/my_dir');
|
open_file($path, $lock = true, $area = null)
Opens a file and optionally locks it.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Location of the file to open |
$lock |
true |
If true, lock exclusively. If false, don't lock. You can also pass an flock() value explicitly. |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
resource, the file resource |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the file could not be locked.
FileAccessException when an invalid $lock value is passed.
|
Example |
$resource = File::open_file(DOCROOT.'/my_dir/text.txt');
|
Please note that the $lock value is ignored if file locking is disabled in the base config (which is the default!).
close_file($resource, $area = null)
Closes a file and unlocks it.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$resource |
required |
An open file resource |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
boolean if a lock is used. |
Example |
$resource = File::open_file(DOCROOT.'/my_dir/text.txt');
// Do something with the resource
File::close_file($resource);
|
get($path, $config = array(), $area = null)
Fetches a file handler for the given file. Read more about handlers.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Path to the file or directory to be wrapped in a handler |
$config |
array() |
optional config array |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
Returns a new file handler object. |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the file extension is not allowed.
|
Example |
$handler = File::get(DOCROOT.'/my_dir/text.txt');
|
get_url($path, $config = array(), $area = null)
Retrieves the public url to a file. A url must be set in the base config or in the area config of the used area.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Path to the file |
$config |
array() |
optional config array |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
The public url for the file. |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the file extension is not allowed.
|
Example |
$url = File::get_url(DOCROOT.'/my_dir/text.txt');
// Returns something like: http://mydomain.com/mydir/text.txt
|
get_permissions($path, $area = null)
Retrieves the octal permissions for a file or directory.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Path to the file |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
The octal file permissions |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the file extension is not allowed.
|
Example |
$permissions = File::get_permissions(DOCROOT.'/my_dir/text.txt');
// Returns "0755"
|
get_time($path, $type = 'modified', $area = null)
Retrieves the created or modified time of a file or directory.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Path to the file |
$type |
'modified' |
Type of time to retrieve. Must be modified or created |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
The file created/modified unix timestamp |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the file extension is not allowed.
|
Example |
$permissions = File::get_time(DOCROOT.'/my_dir/text.txt', 'created');
|
get_size($path, $area = null)
Retrieves size in bytes for a file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Path to the file |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
The file size in bytes. |
Throws |
OutsideAreaException when a path not inside the file area.
FileAccessException when the file extension is not allowed.
InvalidPathException when the file is not found.
|
Example |
$filesize = File::get_size(DOCROOT.'/my_dir/text.txt');
|
file_info($path, $area = null)
Retrieves an array of information about the specified file.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Path to the file |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
|
Returns |
An array with file information items. The array will contain path, filename and extension information,
the file size and permissions, the creation and last modified timestamps, the detected mime-type and
the file's character set.
|
Throws |
InvalidPathException when the file is not found.
InvalidArgumentException when the file info could be determined.
|
Example |
$filesize = File::file_info(DOCROOT.'/my_dir/text.txt');
|
download($path, $name = null, $mime = null, $area = null, $delete = false, $disposition = 'attachment')
Outputs a file, inline or as a downloaded attachment.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$path |
required |
Path to the file |
$name |
null |
Override the file's default filename |
$mime |
null |
Override the file's default mimetype |
$area |
null |
Area object to use, null for base_config in config file (see advanced
usage for more information) |
$delete |
false |
Whether or not to delete the file after download |
$disposition |
'attachment' |
whether to download or output inline. Accepts 'attachment' or 'inline', and defaults to 'attachment'. |
|
Returns |
n/a - this method exits after initiating the download. |
Throws |
InvalidPathException when the file does not exist.
InvalidArgumentException if no file info could be retrieved for the file.
FileAccessException when the file could not be opened for read.
|
Example |
// download file
File::download(DOCROOT.'/my_dir/text.txt', 'newfile.txt');
// output an inline image, for use as an <img> tag source
File::download(DOCROOT.'/img/image.jpg', null, 'image/jpeg', null, false, 'inline');
|
Note that when you call this method, it doesn't immediately download the file. It will schedule a shutdown event
in which the file is downloaded, and then terminates the script. This ensures that all FuelPHP shutdown functions,
like updating sessions, will execute as normal.