php参考手册Filesystem函数(完结了)

在这里插入图片描述

<?php
$path="F:/6/htdocs/cyg.php";
echo basename($path);//带有扩展名的文件名称
echo "<br />";
echo basename($path,".php");
//去掉cyg.php中的.php部分

在这里插入图片描述

<?php
echo chmod("F:/6/htdocs/cyg.php",0600);//所有者可读写,其他人可读
echo chmod("F:/6/htdocs/cyg.php",0644);//1代表成功,0代表失败

// 所有者有所有权限,其他所有人可读和执行
echo chmod("F:/6/htdocs/cyg.php",0755);

// 所有者有所有权限,所有者所在的组可读
echo chmod("F:/6/htdocs/cyg.php",0740);
//什么叫做所有者呢?
//拥有这个cyg.php这个文件的所有权限的人.
//可读是只能读,不能写,不能运行
//什么叫做组呢?
//一样的分成一个组吧。比如我买了一台电脑,我是所有者,我写的文章看的读者是一个组。也就是读者组.
//可执行是可以运行起来cyg.php文件

在这里插入图片描述

<?php
echo filesize("F:/6/htdocs/1.php");//检查文件的大小
$file=fopen("F:/6/htdocs/1.php","a+");//fopen是打开文件.a+是以读/写的方式从文件中读取或往文件中写入数据。 
ftruncate($file,100);//规定新的文件大小是100字节
fclose($file);
clearstatcache();
echo filesize("F:/6/htdocs/1.php");

原来:
在这里插入图片描述

截取后:
在这里插入图片描述

<?php
echo copy("F:/6/htdocs/cyg.php","F:/6/htdocs/666.php");//把第一个参数中的cyg.php文件里面的数据复制一份到666.php文件中

在这里插入图片描述

<?php
$file="F:/6/htdocs/666.php";
unlink($file);//删除666.php文件
<?php
echo dirname("F:/6/htdocs/666.php");//返回666.php文件之前的目录部分
echo "<br />";
echo dirname("/6/htdocs/666.php");

在这里插入图片描述

<?php
echo disk_free_space("E:");//返回e盘的可用空间.字节

在这里插入图片描述

<?php
echo disk_total_space("F:/6/htdocs");
//返回某个指定目录的磁盘总大小。

在这里插入图片描述

<?php
$file = fopen("F:/6/htdocs/1.php", "r");

//输出文本中所有的行,直到文件结束为止。
while(! feof($file))
  {
  echo fgets($file). "<br />";
  }

fclose($file);
?>

在这里插入图片描述

<?php
$file = fopen("F:/6/htdocs/1.php","r");
echo fgetc($file);
fclose($file);//读取1.php中的第一个字符

在这里插入图片描述

<?php
$file = fopen("F:/6/htdocs/demo.php","r");
echo fgetss($file);
fclose($file);//读取一行并过滤掉 HTML 和 PHP 标记。

在这里插入图片描述

<?php
$file = fopen("F:/6/htdocs/demo.php","r");
echo fgetss($file,1024,"<p>");//1024代表读取的字节数.<p>代表p标签读取出来不会删除的标签
fclose($file);//读取一行并过滤掉 HTML 和 PHP 标记。

在这里插入图片描述

<?php
print_r(file("F:/6/htdocs/demo.php"));
//把demo.php文件里面的数据放进数组里面

在这里插入图片描述

<?php
print_r(file_exists("F:/6/htdocs/demo.php"));
//这个函数判断目录或者文件是否存在.1代表存在。0代表不存在

在这里插入图片描述

<?php
var_dump(file_get_contents("F:/6/htdocs/demo.php"));
//这个函数代表把文件变成一个字符串

在这里插入图片描述

<?php
echo file_put_contents("F:/6/htdocs/demo.php", "Hello World. Testing!");

在这里插入图片描述

<?php
date_default_timezone_set('Asia/Shanghai');//上海时区
echo fileatime("F:/6/htdocs/demo.php");
echo "<br />";
echo date("F d Y H:i:s",fileatime("F:/6/htdocs/demo.php"));//上次的访问demo.php文件的时间

在这里插入图片描述

<?php
date_default_timezone_set('Asia/Shanghai');
echo fileatime("F:/6/htdocs/demo.php");
echo "<br />";
echo date("F d Y H:i:s",filectime("F:/6/htdocs/demo.php"));//上次的改变demo.php文件的时间

在这里插入图片描述

<?php
echo filegroup("F:/6/htdocs/demo.php");
//返回demo.php文件在哪个文件组的id

在这里插入图片描述

<?php
var_dump(fileinode("F:/6/htdocs/demo.php"));
//返回demo.php文件的 inode 编号

在这里插入图片描述

<?php
date_default_timezone_set('Asia/Shanghai');
echo filemtime("F:/6/htdocs/demo.php");
echo "<br />";
echo "Last modified: ".date("F d Y H:i:s.",filemtime("test.txt"));//返回上次的修改时间
?>

在这里插入图片描述

<?php
var_dump(fileowner("F:/6/htdocs/demo.php"));//返回demo.php文件的所有者id

在这里插入图片描述

<?php
var_dump(fileperms("F:/6/htdocs/demo.php"));//返回文件或目录的权限。

在这里插入图片描述

<?php
var_dump(filesize("F:/6/htdocs/demo.php"));
//返回文件的大小

在这里插入图片描述

<?php
var_dump(filetype("F:/6/htdocs/demo.php"));
//返回文件的类型

在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/demo.php","w+");//w+能读写
if(flock($file,LOCK_EX))//写入的程序
{	
	fwrite($file,"cyg");//把cyg写入demo.php文件中
	flock($file,LOCK_UN);//(无论共享或独占)
}
else
{
	echo "Error locking file!";
}fclose($file);//关闭文件

在这里插入图片描述

<?php
$file = fopen("F:/6/htdocs/demo.php","r");
fgets($file);//读取第一行
echo  fpassthru($file);//输出第二行开始的所有字符
fclose($file);

在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/demo.php", "w");//写入模式
echo fputs($file,"liwen&cyg");//写入文件,从1开始数起
fclose($file);

在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/demo.php", "r");//读模式
echo fread($file,filesize("F:/6/htdocs/demo.php"));
fclose($file);

在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/demo.php", "r");//读模式
echo fread($file,10);//读10个字符
fclose($file);

在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/demo.php", "r");//读模式
echo fgets($file);//读取第一行
echo "<br />";
echo fseek($file,0);//定位到文件的开头,0输出代表成功

在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/demo.php", "r");//读模式
print_r(fstat($file));//demo.php文件的信息
fclose($file);

在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/demo.php", "r");//读模式
echo ftell($file);//默认是文件的开头0
fseek($file,"3");//定位到3
echo ftell($file);//文件定位到哪里了?3
fclose($file);//关闭文件

在这里插入图片描述

<?php
echo filesize("F:/6/htdocs/demo.php");//开头的demo.php文件多少字节
echo "<br />";
$file=fopen("F:/6/htdocs/demo.php","a+");//a+代表读写方式打开
echo ftruncate($file,100);//把文件截取到100字节
fclose($file);
echo "<br />";
clearstatcache();//清空缓存.再次检查文件的大小
echo filesize("F:/6/htdocs/demo.php");//ftruncate() 在成功时返回一个整数值 1,而不是布尔值的 TRUE

原来的:
在这里插入图片描述

刷新后:
在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/demo.php","w");//a+代表读写方式打开
echo fwrite($file,"Hello World. Testing!");//把第二个参数写入demo.php文件中
fclose($file);
?>

原来的:
在这里插入图片描述
刷新后的:
在这里插入图片描述

<?php
print_r(glob("*.txt"));//找出当前目录下的所有.txt后缀名的文件,*代表什么文件名都行

在这里插入图片描述

<?php
$file="F:/6/htdocs/demo.php";
if(is_dir($file))
{
	echo "这是一个目录";
}
else{
	echo "这不是一个目录";
}
?>

在这里插入图片描述

<?php
$file="C:/Update.exe";
if(is_executable($file))//判断这个文件是不是可以运行,比如exe文件,.com文件不是哦
{
	echo "1";
}
else{
	echo "0";
}
?>

在这里插入图片描述

<?php
$file="F:/6/htdocs/demo.php";
if(is_file($file))//判断这个是不是普通文件
{
	echo "1";
}
else{
	echo 0;
}
?>

在这里插入图片描述

<?php
$file="F:/6/htdocs/demo.php";
if(is_readable($file))//默认文件是可读的
{
	echo "可读";
}

在这里插入图片描述

<?php
$file="F:/6/htdocs/demo.php";
if(is_uploaded_file($file))//默认不设置上传是post还是get的话,默认是get
 {
  echo ("$file is uploaded via HTTP POST");
  }
else
  {
  echo ("$file is not uploaded via HTTP POST");
  }

在这里插入图片描述

<?php
$file="F:/6/htdocs/demo.php";
if(is_writable($file))//判断文件是不是可写
 {
  echo ("$file is uploaded via HTTP POST");
  }
else
  {
  echo ("$file is not uploaded via HTTP POST");
  }

在这里插入图片描述

<?php
$file="F:/6/htdocs/demo.php";
if(is_writeable($file))//判断文件是不是可写
 {
  echo ("$file is uploaded via HTTP POST");
  }
else
  {
  echo ("$file is not uploaded via HTTP POST");
  }

在这里插入图片描述

<?php
$file="F:/6/htdocs/demo.php";
print_r(lstat($file));//文件或者符号连接的信息

在这里插入图片描述
在这里插入图片描述

<?php
mkdir(liwen&cyg);//创建目录
<?php
print_r(pathinfo("F:/6/htdocs/demo.php"));//在那个根目录。demo.php文件.后缀是php。文件名是demo
?>

在这里插入图片描述

<?php
echo readfile("F:/6/htdocs/demo.php");//输出一个文件内容

在这里插入图片描述

<?php
echo realpath("demo.php");//输出这个文件的绝对路径

在这里插入图片描述

<?php
rename('F:/6/htdocs/demo.php',"F:/6/htdocs/d.php");
//绝对路径的哦。把demo.php改成d.php文件

在这里插入图片描述

<?php
$file = fopen("F:/6/htdocs/d.php","r");

//改变文件指针的位置
fseek($file,"15");

//把文件指针设定为 0
rewind($file);

fclose($file);
<?php
$file = "F:/6/htdocs/a/2222";

if(rmdir($file))
{
	echo 111;
}

原来的:
在这里插入图片描述
现在的:
在这里插入图片描述

<?php
$file=fopen("F:/6/htdocs/d.php","w");
if($file)
{
	set_file_buffer($file,0);//设置打开文件的缓冲(内存)大小。
	fwrite($file,"Hello World. Testing!666");
	fclose($file);
}

在这里插入图片描述

<?php

echo tempnam("F:\6\htdocs","000");//创建临时文件

在这里插入图片描述

<?php

echo touch("F:/6/htdocs/d.php");//如果没有这个文件自动创建,设置指定文件的访问和修改时间。

在这里插入图片描述

<?php
$file="F:/6/htdocs/test.txt";
unlink($file);//删除文件
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
register_filesystem函数是Linux内核中用于向系统注册文件系统的函数,其源代码如下: ``` int register_filesystem(struct file_system_type *fs) { int err; down_write(&file_systems_lock); err = __register_filesystem(fs, false); up_write(&file_systems_lock); return err; } ``` 该函数接受一个file_system_type结构体指针作为参数,其中包含了要注册的文件系统的名称、挂载函数、卸载函数等信息。函数首先使用down_write函数获取文件系统锁,以确保在注册过程中不会发生并发问题。接着调用__register_filesystem函数进行具体的注册操作。最后使用up_write函数释放文件系统锁,并返回注册结果。 __register_filesystem函数的源代码如下: ``` int __register_filesystem(struct file_system_type *fs, int is_default) { struct file_system_type *old; int err = 0; /* Make sure we are not un-registering a file system while it is * being mounted. */ if (is_default) down_write(&file_systems_lock); else down_write_trylock(&file_systems_lock); old = find_filesystem(fs->name); if (old) { /* File system already exists */ err = -EBUSY; if (fs->owner != old->owner) err = -EEXIST; goto out; } err = -ENOMEM; if (fs->fs_supers) { err = radix_tree_preload(GFP_KERNEL); if (err) goto out; } err = security_fs_context_dup(fs->fs_context); if (err) goto out_radix; err = security_fs_context_parse_param(fs->fs_context, fs->name); if (err) goto out_fs_context; list_add(&fs->fs_supers, &file_systems); if (is_default) up_write(&file_systems_lock); else up_write(&file_systems_lock); return 0; out_fs_context: security_fs_context_free(fs->fs_context); out_radix: if (fs->fs_supers) radix_tree_preload_end(); out: up_write(&file_systems_lock); return err; } ``` 该函数首先获取文件系统锁,接着使用find_filesystem函数查找是否已经存在同名的文件系统。如果已经存在,则返回错误码。如果不存在,则进行一系列初始化操作,如调用radix_tree_preload函数预加载文件系统的超级块、复制安全上下文等。最后将文件系统加入到file_systems链表中,并释放文件系统锁。 总体来说,register_filesystem函数和__register_filesystem函数的功能非常简单明了,主要就是向系统注册文件系统。在实现过程中,需要注意并发问题,尤其是多线程同时注册文件系统时可能会引发竞争问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贵哥的编程之路(热爱分享)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值