Rumah  >  Artikel  >  pembangunan bahagian belakang  >  如何通过php文件系统函数获取磁盘分区的大小

如何通过php文件系统函数获取磁盘分区的大小

黄舟
黄舟asal
2017-05-20 16:56:283003semak imbas

如何通过php文件系统函数获取磁盘分区的大小

通过文件系统函数不但可以对目录、文件进行操作,而且可以获取目录,文件的相关信息,那么是否可以获取磁盘分区的大小呢!

获取磁盘分区的大小应用是 disk_total_sapce()函数,获取磁盘分区的剩余空间应用的是 disk_free_space()函数。

disk_total_space()函数:获取一个目录的磁盘大小,语法格式如下:

float disk_total_space(string directory)

该函数根据参数 directory提供的一个目录字符串,返回相应的文件系统或磁盘区分的所有字节数。

注意:

本函数不能作用于远程文件,其检测的文件必须通过服务器的文件系统访问!

disk_free_space()函数:获取一个目录的可用空间,语法格式如下:

float disk_free_space(string directory)

参数 directory 用来指定文件系统或磁盘区分!

说明:

本函数返回的是该目录所在的磁盘分区的总大小,因此再给出同一个磁盘分区的不同目录作为参数所得到的结果完全相同!

应用实例

本示例应用 disk_total_space()函数获取磁盘分区大小。具体代码如下:

(1) 创建一个php文件,添加表单,设置文本框,提交按钮,使用POST方法,讲述提交到本页。

(2) 通过$_POST获取表单提交的目录路径,首先判断获取的目录是否合理。然后通过 iconv()函数对获取的字符串进行编码转换,接着对获取的字符串进行截取。获取该目录所在的裁判分区,并应用 disk_total_space()函数获取磁盘分区的大小,最后,应用 opendir()函数和 readdir()函数读取提交目录的内容,具体代码如下:

<form name="form1" action="6.php" method="post">
   文件名称: <input name="file_name" type="text">
           <input type="submit" name="Submit" value="提交">
</form>
<?php
header("Content-Type:text/html; charset=utf-8");
if ($_POST[&#39;file_name&#39;]){
if($_POST[&#39;file_name&#39;]!="" && is_file($_POST[&#39;file_name&#39;])==false){
    $file_name = iconv("utf-8","gb2312",$_POST[&#39;file_name&#39;]);      // 编码格式转换
    if (file_exists($file_name)){                                  //判断目录是否存在
        $len = strripos($file_name,":");                            //截取字符串
        $dir = substr($file_name,0,$len+1);                        //获取提交目录所在磁盘
        $filesize_z = disk_total_space($dir);                       //获取目录大小
        $filesize_z = number_format($filesize_z/(1024*1024*1024),2,".","");    //数字的格式化
        $filesize_s = disk_free_space($dir);                            //获取裁判剩余空间
        $filesize_s =  number_format($filesize_s/(1024*1024*1024),2,".",""); //字节的格式化
        echo "本地磁盘(".$dir.") 总大小:".$filesize_z." GB   可用空间:".$filesize_s."GB <br><br>";
        echo $_POST[&#39;file_name&#39;]."目录下的内容:"."<br>";
        $i = 0;
        $list = opendir($file_name);                                //打开目录
        while($read_list = readdir($list)){                         //读取目录
            $i++;
            echo "$i:".iconv("gb2312","utf-8",$read_list)."<br>";   //输出目录中的内容
        }
        closedir($list);                                            //关于目录
    }else{
        echo "<script>alert(&#39;目录不存在!&#39;);</script>";
    }
}else{
    echo "<script>alert(&#39;请输入正确的目录路径!&#39;);</script>";
}
}

上述输出结果如下:

134.png

说明:

strripos()函数用于判断指定字符串在另一字符串中最后出现的位置。通过本函数可以获取到指定字符串 A 在另一字符串 B 中最后出现的位置,其返回值为 int型,根据该返回值就可以对字符串 B 以字符串 A为分割点进行截取,在执行截取的操作时需要应用到 substr()函数。

$len = strripos($file_name,":");                            //截取字符串
$dir = substr($file_name,0,$len+1);                        //获取提交目录所在磁盘

Atas ialah kandungan terperinci 如何通过php文件系统函数获取磁盘分区的大小. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn