# 文件系统

* [basename - 返回路径中的文件名部分](#basename)
* [chgrp - 改变文件所属的组](#chgrp)
* [chmod - 改变文件模式](#chmod)
* [chown - 改变文件的所有者](#chown)
* [clearstatcache - 清除文件状态缓存](#clearstatcache)
* [copy - 拷贝文件](#copy)
* [dirname - 返回路径中的目录部分](#dirname)
* [disk_free_space - 返回目录中的可用空间](#diskfreespace)
* [disk_total_space - 返回一个目录的磁盘总大小](#disktotalspace)
* [diskfreespace - 返回目录中的可用空间](#diskfreespace)
* [fclose - 关闭一个已打开的文件指针](#fclose)
* [feof - 测试文件指针是否到了文件结束的位置](#feof)
* [fflush - 将缓冲内容输出到文件](#fflush)
* [fgetc - 从文件指针中读取字符](#fgetc)
* [fgetcsv - 从文件指针中读入一行并解析 CSV 字段](#fgetcsv)
* [fgets - 从文件指针中读取一行](#fgets)
* [file_exists - 检查文件或目录是否存在](#fileexists)
* [file_get_contents - 将整个文件读入一个字符串](#filegetcontents)
* [file_put_contents - 将一个字符串写入文件](#fileputcontents)
* [file - 把整个文件读入一个数组中](#file)
* [fileatime - 取得文件的上次访问时间](#fileatime)
* [filectime - 取得文件的 inode 修改时间](#filectime)
* [filegroup - 取得文件的组](#filegroup)
* [fileinode - 取得文件的 inode](#fileinode)
* [filemtime - 取得文件修改时间](#filemtime)
* [fileowner - 取得文件的所有者](#fileowner)
* [fileperms - 取得文件的权限](#fileperms)
* [filesize - 取得文件大小](#filesize)
* [filetype - 取得文件类型](#filetype)
* [flock - 轻便的咨询文件锁定](#flock)
* [fnmatch - 用模式匹配文件名](#fnmatch)
* [fopen - 打开文件或者 URL](#fopen)
* [fpassthru - 输出文件指针处的所有剩余数据](#fpassthru)
* [fputcsv - 将行格式化为 CSV 并写入文件指针](#fputcsv)
* [fputs - 写入文件（可安全用于二进制文件）](#fputs)
* [fread - 读取文件（可安全用于二进制文件）](#fread)
* [fscanf - 从文件中格式化输入](#fscanf)
* [fseek - 在文件指针中定位](#fseek)
* [fstat - 通过已打开的文件指针取得文件信息](#fstat)
* [ftell - 返回文件指针读 / 写的位置](#ftell)
* [ftruncate - 将文件截断到给定的长度](#ftruncate)
* [fwrite - 写入文件（可安全用于二进制文件）](#fwrite)
* [glob - 寻找与模式匹配的文件路径](#glob)
* [is_dir - 判断给定文件名是否是一个目录](#isdir)
* [is_executable - 判断给定文件名是否可执行](#isexecutable)
* [is_file - 判断给定文件名是否为一个正常的文件](#isfile)
* [is_link - 判断给定文件名是否为一个符号连接](#islink)
* [is_readable - 判断给定文件名是否可读](#isreadable)
* [is_uploaded_file - 判断文件是否是通过 HTTP POST 上传的](#isuploadedfile)
* [is_writable - 判断给定的文件名是否可写](#iswritable)
* [is_writeable - 判断给定的文件名是否可写](#iswriteable)
* [lchgrp - 修改符号链接的所有组](#lchgrp)
* [lchown - 修改符号链接的所有者](#lchown)
* [link - 建立一个硬连接](#link)
* [linkinfo - 获取一个连接的信息](#linkinfo)
* [lstat - 给出一个文件或符号连接的信息](#lstat)
* [mkdir - 新建目录](#mkdir)
* [move_uploaded_file - 将上传的文件移动到新位置](#moveuploadedfile)
* [parse_ini_file - 解析一个配置文件](#parseinifile)
* [parse_ini_string - 解析配置字符串](#parseinistring)
* [pathinfo - 返回文件路径的信息](#pathinfo)
* [pclose - 关闭进程文件指针](#pclose)
* [popen - 打开进程文件指针](#popen)
* [readfile - 输出文件](#readfile)
* [readlink - 返回符号连接指向的目标](#readlink)
* [realpath_cache_get - 获取真实目录缓存的详情](#realpathcacheget)
* [realpath_cache_size - 获取真实路径缓冲区的大小](#realpathcachesize)
* [realpath - 返回规范化的绝对路径名](#realpath)
* [rename - 重命名一个文件或目录](#rename)
* [rewind - 倒回文件指针的位置](#rewind)
* [rmdir - 删除目录](#rmdir)
* [set_file_buffer - 设置给定流上的写文件缓冲](#setfilebuffer)
* [stat - 给出文件的信息](#stat)
* [symlink - 建立符号连接](#symlink)
* [tempnam - 建立一个具有唯一文件名的文件](#tempnam)
* [tmpfile - 建立一个临时文件](#tmpfile)
* [touch - 设定文件的访问和修改时间](#touch)
* [umask - 改变当前的 umask](#umask)
* [unlink - 删除文件](#unlink)

## basename

```php
<?php

var_dump(basename('foo/bar'));                  // string(3) "bar"
var_dump(basename('/foo/bar/'));                // string(3) "bar"
var_dump(basename('/foo/bar.txt'));             // string(7) "bar.txt"
var_dump(basename('/foo/bar/baz.txt', '.txt')); // string(3) "baz"
var_dump(basename('/foo/'));                    // string(3) "foo"
var_dump(basename('/'));                        // string(0) ""
var_dump(basename('.'));                        // string(1) "."

```

## chgrp

```php
<?php

var_dump(chgrp(__FILE__, 0));

```

## chmod

```php
<?php

var_dump(chmod(__FILE__, 0000));
var_dump(chmod(__FILE__, 0421));
var_dump(chmod(__FILE__, 0655));
var_dump(chmod(__FILE__, 0777));

```

## chown

```php
<?php

var_dump(chown(__FILE__, 0));

```

## clearstatcache

```php
<?php

clearstatcache();
clearstatcache(true);
clearstatcache(true, __FILE__);

```

## copy

```php
<?php

var_dump(copy(__DIR__ . '/foo.txt', __DIR__ . '/bar.txt'));

```

## dirname

```php
<?php

var_dump(dirname('foo/bar'));             // string(3) "foo"
var_dump(dirname('/foo/bar/'));           // string(4) "/foo"
var_dump(dirname('/foo/bar.txt'));        // string(4) "/foo"
var_dump(dirname('/foo/bar/baz.txt', 2)); // string(4) "/foo"
var_dump(dirname('/foo/'));               // string(1) "\"
var_dump(dirname('/'));                   // string(1) "\"
var_dump(dirname('.'));                   // string(1) "."

```

## disk_free_space

```php
<?php

var_dump(disk_free_space('/'));
var_dump(disk_free_space('C:'));

```

## disk_total_space

```php
<?php

var_dump(disk_total_space('/'));
var_dump(disk_total_space('C:'));

```

## diskfreespace

```php
<?php

var_dump(diskfreespace('/'));
var_dump(diskfreespace('C:'));

```

## fclose

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
var_dump(fclose($handle)); // bool(true)

```

## feof

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
var_dump(feof($handle)); // bool(false)

while (fgets($handle) !== false) {
}
var_dump(feof($handle)); // bool(true)

```

## fflush

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'w');
fwrite($handle, 'foo');
var_dump(fflush($handle)); // bool(true)

```

## fgetc

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
while (($character = fgetc($handle)) !== false) {
    var_dump($character);
}
// string(1) "0"
// string(1) "0"
// string(1) "0"

```

上例中的 `example.txt` 文件内容：

```
000
```

## fgetcsv

```php
<?php

$handle = fopen(__DIR__ . '/example.csv', 'r');
while (($data = fgetcsv($handle)) !== false) {
    var_dump($data);
}
// array(2) { [0]=> string(3) "foo" [1]=> string(3) "bar" }
// array(2) { [0]=> string(3) "baz" [1]=> string(3) "qux" }

rewind($handle);
while (($data = fgetcsv($handle, 1024, ',')) !== false) {
    var_dump($data);
}
// array(2) { [0]=> string(3) "foo" [1]=> string(3) "bar" }
// array(2) { [0]=> string(3) "baz" [1]=> string(3) "qux" }

```

上例中的 `example.csv` 文件内容：

```
foo,bar
baz,qux
```

## fgets

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
while (($data = fgets($handle)) !== false) {
    var_dump(trim($data));
}
// string(3) "foo"
// string(3) "bar"

rewind($handle);
while (($data = fgets($handle, 1024)) !== false) {
    var_dump(trim($data));
}
// string(3) "foo"
// string(3) "bar"

```

上例中的 `example.txt` 文件内容：

```
foo
bar
```

## file_exists

```php
<?php

var_dump(file_exists(__DIR__));
var_dump(file_exists(__DIR__ . '/example.txt'));

```

## file_get_contents

```php
<?php

var_dump(file_get_contents('https://github.com/'));
var_dump(file_get_contents(__DIR__ . '/example.txt'));
var_dump(file_get_contents(__DIR__ . '/example.txt', true));
var_dump(file_get_contents(__DIR__ . '/example.txt', true, null, 1, 2));

```

## file_put_contents

```php
<?php

var_dump(file_put_contents(__DIR__ . '/example.txt', 'Hello World!'));
var_dump(file_put_contents(__DIR__ . '/example.txt', 'Hello World!', FILE_USE_INCLUDE_PATH));
var_dump(file_put_contents(__DIR__ . '/example.txt', 'Hello World!', FILE_APPEND));
var_dump(file_put_contents(__DIR__ . '/example.txt', 'Hello World!', LOCK_EX));

```

## file

```php
<?php

var_dump(file(__DIR__ . '/example.txt'));                        // array(4) { [0]=> string(5) "foo " [1]=> string(5) "bar " [2]=> string(5) "baz " [3]=> string(3) "qux" }
var_dump(file(__DIR__ . '/example.txt', FILE_USE_INCLUDE_PATH)); // array(4) { [0]=> string(5) "foo " [1]=> string(5) "bar " [2]=> string(5) "baz " [3]=> string(3) "qux" }
var_dump(file(__DIR__ . '/example.txt', FILE_IGNORE_NEW_LINES)); // array(4) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" [3]=> string(3) "qux" }
var_dump(file(__DIR__ . '/example.txt', FILE_SKIP_EMPTY_LINES)); // array(4) { [0]=> string(5) "foo " [1]=> string(5) "bar " [2]=> string(5) "baz " [3]=> string(3) "qux" }

```

上例中的 `example.txt` 文件内容：

```
foo
bar
baz
qux
```

## fileatime

```php
<?php

var_dump(fileatime(__DIR__ . '/example.txt'));

```

## filectime

```php
<?php

var_dump(filectime(__DIR__ . '/example.txt'));

```

## filegroup

```php
<?php

var_dump(filegroup(__DIR__ . '/example.txt'));

```

## fileinode

```php
<?php

var_dump(fileinode(__DIR__ . '/example.txt'));

```

## filemtime

```php
<?php

var_dump(filemtime(__DIR__ . '/example.txt'));

```

## fileowner

```php
<?php

var_dump(fileowner(__DIR__ . '/example.txt'));

```

## fileperms

```php
<?php

var_dump(fileperms(__DIR__ . '/example.txt'));

```

## filesize

```php
<?php

var_dump(filesize(__DIR__ . '/example.txt'));

```

## filetype

```php
<?php

var_dump(filetype(__DIR__));                  // string(3) "dir"
var_dump(filetype(__DIR__ . '/example.txt')); // string(4) "file"

```

## flock

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
var_dump(flock($handle, LOCK_SH)); // bool(true)
var_dump(flock($handle, LOCK_EX)); // bool(true)
var_dump(flock($handle, LOCK_UN)); // bool(true)

```

## fnmatch

```php
<?php

var_dump(fnmatch('*f[a-z]o', 'foo')); // bool(true)

```

## fopen

```php
<?php

var_dump(fopen(__DIR__ . '/example.txt', 'r'));
var_dump(fopen(__DIR__ . '/example.txt', 'r', true));
var_dump(fopen(__DIR__ . '/example.txt', 'r+'));
var_dump(fopen(__DIR__ . '/example.txt', 'w'));
var_dump(fopen(__DIR__ . '/example.txt', 'w+'));
var_dump(fopen(__DIR__ . '/example.txt', 'a'));
var_dump(fopen(__DIR__ . '/example.txt', 'a+'));
var_dump(fopen(__DIR__ . '/example.txt', 'x'));
var_dump(fopen(__DIR__ . '/example.txt', 'x+'));
var_dump(fopen(__DIR__ . '/example.txt', 'c'));
var_dump(fopen(__DIR__ . '/example.txt', 'c+'));

```

## fpassthru

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
fpassthru($handle);
// foo
// bar
// baz
// qux

```

上例中的 `example.txt` 文件内容：

```
foo
bar
baz
qux
```

## fputcsv

```php
<?php

$data = [['foo', 'bar'], ['baz', 'qux']];
$handle = fopen(__DIR__ . '/example.csv', 'w');
foreach ($data as $value) {
    fputcsv($handle, $value);
}

```

上例中的 `example.csv` 文件内容：

```
foo,bar
baz,qux
```

---

```php
<?php

$data = [['foo', 'bar'], ['baz', 'qux']];
$handle = fopen(__DIR__ . '/example.csv', 'w');
foreach ($data as $value) {
    fputcsv($handle, $value, ';');
}

```

上例中的 `example.csv` 文件内容：

```
foo;bar
baz;qux
```

## fputs

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'w');
var_dump(fputs($handle, 'foo')); // int(3)

```

上例中的 `example.txt` 文件内容：

```
foo
```

---

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'w');
var_dump(fputs($handle, 'foo', 1)); // int(1)

```

上例中的 `example.txt` 文件内容：

```
f
```

## fread

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
var_dump(fread($handle, filesize(__DIR__ . '/example.txt'))); // string(3) "foo"

rewind($handle);
while (!feof($handle)) {
    var_dump(fread($handle, 1));
}
// string(1) "f"
// string(1) "o"
// string(1) "o"
// string(0) ""

```

## fscanf

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
var_dump(fscanf($handle, 'foo=%s bar=%s')); // array(2) { [0]=> string(3) "foo" [1]=> string(3) "bar" }

```

上例中的 `example.txt` 文件内容：

```
foo=foo bar=bar
```

## fseek

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
var_dump(fseek($handle, 1));            // int(0)
var_dump(fgets($handle));               // string(2) "oo"

var_dump(fseek($handle, 0, SEEK_SET));  // int(0)
var_dump(fgets($handle));               // string(3) "foo"

rewind($handle);
var_dump(fseek($handle, 2, SEEK_CUR));  // int(0)
var_dump(fgets($handle));               // string(1) "o"

rewind($handle);
var_dump(fseek($handle, -1, SEEK_END)); // int(0)
var_dump(fgets($handle));               // string(1) "o"

```

上例中的 `example.txt` 文件内容：

```
foo
```

## fstat

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
var_dump(fstat($handle));

```

## ftell

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r');
var_dump(ftell($handle)); // int(0)

var_dump(fgets($handle)); // string(3) "foo"
var_dump(ftell($handle)); // int(3)

```

上例中的 `example.txt` 文件内容：

```
foo
```

## ftruncate

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r+');
var_dump(ftruncate($handle, 1)); // bool(true)

```

上例中的 `example.txt` 文件内容：

```
foo
```

## fwrite

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'w');
var_dump(fwrite($handle, 'foo')); // int(3)

```

上例中的 `example.txt` 文件内容：

```
foo
```

---

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'w');
var_dump(fwrite($handle, 'foo', 1)); // int(1)

```

上例中的 `example.txt` 文件内容：

```
f
```

## glob

```php
<?php

var_dump(glob('*.php'));
var_dump(glob('*.php', GLOB_MARK));
var_dump(glob('*.php', GLOB_NOSORT));
var_dump(glob('*.php', GLOB_NOCHECK));
var_dump(glob('*.php', GLOB_NOESCAPE));
var_dump(glob('*.php', GLOB_BRACE));
var_dump(glob('*.php', GLOB_ONLYDIR));
var_dump(glob('*.php', GLOB_ERR));

```

## is_dir

```php
<?php

var_dump(is_dir(__FILE__)); // bool(false)
var_dump(is_dir(__DIR__));  // bool(true)
var_dump(is_dir('.'));      // bool(true)
var_dump(is_dir('..'));     // bool(true)

```

## is_executable

```php
<?php

var_dump(is_executable(__FILE__));
var_dump(is_executable(__DIR__ . '/example.txt'));

```

## is_file

```php
<?php

var_dump(is_file(__FILE__));                 // bool(true)
var_dump(is_file(__DIR__));                  // bool(false)
var_dump(is_file(__DIR__ . '/example.txt')); // bool(true)
var_dump(is_file('.'));                      // bool(false)
var_dump(is_file('..'));                     // bool(false)

```

## is_link

```php
<?php

var_dump(is_link(__DIR__ . '/link'));
var_dump(is_link(__FILE__));

```

## is_readable

```php
<?php

var_dump(is_readable(__DIR__));
var_dump(is_readable(__DIR__ . '/example.txt'));
var_dump(is_readable(__FILE__));

```

## is_uploaded_file

```php
<?php

var_dump(is_uploaded_file($_FILES['file']['tmp_name']));

```

## is_writable

```php
<?php

var_dump(is_writable(__DIR__ . '/example.txt'));
var_dump(is_writable(__FILE__));

```

## is_writeable

```php
<?php

var_dump(is_writeable(__DIR__ . '/example.txt'));
var_dump(is_writeable(__FILE__));

```

## lchgrp

```php
<?php

var_dump(lchgrp(__DIR__ . '/link', 0));

```

## lchown

```php
<?php

var_dump(lchown(__DIR__ . '/link', 0));

```

## link

```php
<?php

var_dump(link(__DIR__ . '/example.txt', __DIR__ . '/link'));

```

## linkinfo

```php
<?php

var_dump(linkinfo(__DIR__ . '/link'));

```

## lstat

```php
<?php

var_dump(lstat(__FILE__));
var_dump(lstat(__DIR__ . '/link'));

```

## mkdir

```php
<?php

var_dump(mkdir(__DIR__ . '/example/'));
var_dump(mkdir(__DIR__ . '/example/', 0777));
var_dump(mkdir(__DIR__ . '/example/foo/bar/', 0777, true));

```

## move_uploaded_file

```php
<?php

var_dump(move_uploaded_file($_FILES['file']['tmp_name'], __DIR__ . '/' . $_FILES['file']['name']));

```

## parse_ini_file

```php
<?php

var_dump(parse_ini_file(php_ini_loaded_file()));
var_dump(parse_ini_file(php_ini_loaded_file(), true));

```

## parse_ini_string

```php
<?php

$string = <<<EOT
             [foo]
             a = 1
             b = 5

             [bar]
             c = BIRD
             d = "http://www.example.com/~username"

             [baz]
             e[] = "7.0"
             e[] = "7.4"
             EOT;
var_dump(parse_ini_string($string));       // array(5) { ["a"]=> string(1) "1" ["b"]=> string(1) "5" ["c"]=> string(4) "BIRD" ["d"]=> string(32) "http://www.example.com/~username" ["e"]=> array(2) { [0]=> string(3) "7.0" [1]=> string(3) "7.4" } }
var_dump(parse_ini_string($string, true)); // array(3) { ["foo"]=> array(2) { ["a"]=> string(1) "1" ["b"]=> string(1) "5" } ["bar"]=> array(2) { ["c"]=> string(4) "BIRD" ["d"]=> string(32) "http://www.example.com/~username" } ["baz"]=> array(1) { ["e"]=> array(2) { [0]=> string(3) "7.0" [1]=> string(3) "7.4" } } }

```

## pathinfo

```php
<?php

var_dump(pathinfo(__FILE__));
var_dump(pathinfo(__FILE__, PATHINFO_DIRNAME));
var_dump(pathinfo(__FILE__, PATHINFO_BASENAME));
var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION));
var_dump(pathinfo(__FILE__, PATHINFO_FILENAME));

```

## pclose

```php
<?php

$handle = popen('dir', 'r');
var_dump(pclose($handle));

```

## popen

```php
<?php

var_dump(popen('dir', 'r'));

```

## readfile

```php
<?php

readfile(__DIR__ . '/example.txt');
// foo
// bar
// baz
// qux
readfile(__DIR__ . '/example.txt', true);
// foo
// bar
// baz
// qux

```

上例中的 `example.txt` 文件内容：

```
foo
bar
baz
qux
```

## readlink

```php
<?php

var_dump(readlink(__DIR__ . '/link'));

```

## realpath_cache_get

```php
<?php

var_dump(realpath_cache_get());

```

## realpath_cache_size

```php
<?php

var_dump(realpath_cache_size());

```

## realpath

```php
<?php

var_dump(realpath('example.txt'));
var_dump(realpath(__DIR__));
var_dump(realpath(__DIR__ . '/example.txt'));
var_dump(realpath(__FILE__));

```

## rename

```php
<?php

var_dump(rename(__DIR__ . '/example.txt', __DIR__ . '/test.txt')); // bool(true)
var_dump(rename(__DIR__ . '/example/', __DIR__ . '/test/'));       // bool(true)

```

## rewind

```php
<?php

$handle = fopen(__DIR__ . '/example.txt', 'r+');
fwrite($handle, 'bar baz qux');
var_dump(rewind($handle));                                    // bool(true)
fwrite($handle, 'foo');
var_dump(rewind($handle));                                    // bool(true)
var_dump(fread($handle, filesize(__DIR__ . '/example.txt'))); // string(11) "foo baz qux"

```

## rmdir

```php
<?php

var_dump(rmdir(__DIR__ . '/example/'));

```

## set_file_buffer

```php
<?php

var_dump(set_file_buffer(fopen(__DIR__ . '/example.txt', 'w'), 0));

```

## stat

```php
<?php

var_dump(stat(__FILE__));

```

## symlink

```php
<?php

var_dump(symlink(__DIR__ . '/example.txt', __DIR__ . '/link'));

```

## tempnam

```php
<?php

var_dump(tempnam(__DIR__, 'tmp'));

```

## tmpfile

```php
<?php

var_dump(tmpfile());

```

## touch

```php
<?php

var_dump(touch(__DIR__ . '/example.txt'));
var_dump(touch(__DIR__ . '/example.txt', time()));
var_dump(touch(__DIR__ . '/example.txt', time(), time()));

```

## umask

```php
<?php

var_dump(umask());
var_dump(umask(0777));

```

## unlink

```php
<?php

var_dump(unlink(__DIR__ . '/example.txt'));

```

