文件的操作
PHP文件操作API
1、文件创建/打开
fopen()的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。
fopen("webdictionary.txt","r")
模式
描述
r
打开文件为只读。文件指针在文件的开头开始。
w
打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a
打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
x
创建新文件为只写。返回FALSE和错误,如果文件已存在。
r+
打开文件为读/写、文件指针在文件开头开始。
w+
打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+
打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+
创建新文件为读/写。返回FALSE和错误,如果文件已存在。
2、文件写入
fwrite()向文件写入内容
fwrite(file,string,length)
file
必需。规定要写入的打开文件。
string
必需。规定要写入打开文件的字符串。
length
可选。规定要写入的最大字节数。
fopen函数也用于创建文件。也许有点混乱,但是在PHP中,创建文件所用的函数与打开文件的相同。如果您用fopen()打开并不存在的文件,此函数会创建文件
$myfile=fopen("testfile.txt","w")
?PHP
$myfile=fopen("newfile.txt","w")
$txt="BillGates\n";
fwrite($myfile,$txt);
$txt="SteveJobs\n";
fwrite($myfile,$txt);
fclose($myfile);
?
请注意,我们向文件"newfile.txt"写了两次。在每次我们向文件写入时,在我们发送的字符串$txt中,第一次包含"BillGates",第二次包含"SteveJobs"。在写入完成后,我们使用fclose()函数来关闭文件。
BillGates
SteveJobs
PHP覆盖:往已有文件里面写数据,所有已存在的数据会被擦除并以一个新文件开始。
?PHP
$myfile=fopen("newfile.txt","w")ordie("Unabletoopenfile!");
$txt="MickeyMouse\n";
fwrite($myfile,$txt);
$txt="MinnieMouse\n";
fwrite($myfile,$txt);
fclose($myfile);
?
如果现在我们打开这个"newfile.txt"文件,Bill和Steve都已消失,只剩下我们刚写入的数据:
MickeyMouseMinnieMouse
file_put_contents:向文件写入内容,等同依次调用fopen,fwrite以及fclose函数。
file_put_contents(file,data,mode,context)
参数
描述
file
必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data
可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode
可选。规定如何打开/写入文件。可能的值:
·FILE_USE_INCLUDE_PATH
·FILE_APPEND
·LOCK_EX
context
可选。规定文件句柄的环境。
context是一套可以修改流的行为的选项。若使用null,则忽略。
?PHP
echofile_put_contents("test.txt","HelloWorld.Testing!");
?//26
3、文件读取
fread()函数读取打开的文件。
fread的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
fread(file,length)
参数
描述
file
必需。规定要读取打开文件。
length
必需。规定要读取的最大字节数。
提示:如果只是想将一个文件的内容读入到一个字符串中,请使用file_get_contents(),它的性能比fread()好得多。
例子1
从文件中读取10个字节:
?PHP
$file=fopen("test.txt","r");
fread($file,"10");
fclose($file);
?
例子2
读取整个文件:
?PHP
$file=fopen("test.txt","r");
fread($file,filesize("test.txt"));
fclose($file);
?
fgets()函数用于从文件读取单行。
注释:调用fgets()函数之后,文件指针会移动到下一行。
?PHP
$myfile=fopen("webdictionary.txt","r");
echofgets($myfile);
?
fgetc()函数用于从文件中读取单个字符。
?PHP
$myfile=fopen("webdictionary.txt","r");
//输出单字符直到end-of-file
while(!feof($myfile)){
echofgetc($myfile);
}
fclose($myfile);
?
file_get_contents()把整个文件读入一个字符串。
file()函数把整个文件读入一个数组中。
与file_get_contents()类似,不同的是file()将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回false
file(path,include_path,context)
path
必需。规定要读取的文件。
include_path
可选。如果也想在include_path中搜寻文件的话,可以将该参数设为"1"。
context
可选。规定文件句柄的环境。
context是一套可以修改流的行为的选项。若使用null,则忽略。
例子
?PHP
print_r(file("test.txt"));
?
输出:
Array
(
[0]=HelloWorld.Testingtesting!
[1]=Anotherday,anotherline.
[2]=Ifthearraypicksupthisline,
[3]=thenisitapickupline?
)
4、检查文件是否存在
file_exists检查文件或目录是否存在。
如果指定的文件或目录存在则返回true,否则返回false。
file_exists(path)
参数
描述
path
必需。规定要检查的路径。
?PHP
echofile_exists("test.txt");
?
检查文件是否可读写执行
is_readable:检查文件是否可读。
如果由file指定的文件或目录存在并且可读,则返回TRUE。
is_readable(file)
参数
描述
file
必需。规定要检查的文件。
?PHP
$file="test.txt";
if(is_readable($file))
{
echo("$fileisreadable");
}
else
{
echo("$fileisnotreadable");
}
?
//test.txtisreadable
is_writable:检查文件是否是否可写入。
如果文件存在并且可写则返回true。file参数可以是一个允许进行是否可写检查的目录名。
is_writable(file)
参数
描述
file
必需。规定要检查的文件。
?PHP
$file="test.txt";
if(is_writable($file))
{
echo("$fileiswriteable");
}
else
{
echo("$fileisnotwriteable");
}
?
//test.txtiswriteable
is_executable:检查文件是否可执行。
如果文件存在且可执行,则返回true。
is_executable(file)
参数
描述
file
必需。规定要检查的文件。
?PHP
$file="setup.exe";
if(is_executable($file))
{
echo("$fileisexecutable");
}
else
{
echo("$fileisnotexecutable");
}
?
//setup.exeisexecutable
5、文件拷贝
copy:拷贝文件。
将文件从source拷贝到destination。如果成功则返回TRUE,否则返回FALSE。
copy(source,destination)
source
必需。规定要复制的文件。
destination
必需。规定复制文件的目的地。
?PHP
echocopy("source.txt","target.txt");
?//1
6、rename()函数重命名文件或目录
若成功,则该函数返回true。若失败,则返回false。
rename(oldname,newname,context)
参数
描述
oldname
必需。规定要重命名的文件或目录。
newname
必需。规定文件或目录的新名称。
context
可选。规定文件句柄的环境。context是可修改流的行为的一套选项。
?PHP
rename("images","pictures");
?
6、文件删除
unlink:删除文件。
若成功,则返回true,失败则返回false。
unlink(filename,context)
?PHP
$file="test.txt";
if(!unlink($file))
{
echo("Errordeleting$file");
}
else
{
echo("Deleted$file");
}
?
7、取得文件大小、类型、修改时间信息
filesize()函数返回指定文件的大小。
若成功,则返回文件大小的字节数。若失败,则返回false
filesize("test.txt");
7、filetype()函数返回指定文件或目录的类型。
若成功,则返回7种可能的值。若失败,则返回false。
可能的值
fifo
char
dir
block
link
file
unknown
filetype(filename)
filename
必需。规定要检查的文件。
例题1
?PHP
echofiletype("test.txt");
?//file
例题2
?PHP
echofiletype("images");
?//dir
8、filemtime()函数返回文件内容上次的修改时间
若成功,则时间以Unix时间戳的方式返回。若失败,则返回false。
filemtime(filename)
参数
描述
filename
必需。规定要检查的文件。
?PHP
echofilemtime("test.txt");
echo"Lastmodified:".date("FdYH:i:s.",filemtime("test.txt"));
?
//
//Lastmodified:February:22:46.
9、文件指针函数
fclose()函数用于关闭打开的文件。
?PHP
$myfile=fopen("webdictionary.txt","r");
fclose($myfile);
?
feof()测试文件指针是否到了文件结束的位置。
feof()对于遍历未知长度的数据很有用。
?PHP
$myfile=fopen("webdictionary.txt","r");
while(!feof($myfile)){
echofgets($myfile)."br";
}
fclose($myfile);
?
fseek:在文件指针中定位。
fseek(file,offset,whence)
参数
描述
file
必需。规定要在其中定位的文件。
offset
必需。规定新的位置(从文件头开始以字节数度量)。
whence
可选。(PHP4中新增的)。可能的值:
·SEEK_SET-设定位置等于offset。默认。
·SEEK_CUR-设定位置为当前位置加上offset。
·SEEK_END-设定位置为文件末尾(EOF)加上offset(要移动到文件末尾之前的位置,offset必须是一个负值)。
提示:通过使用ftell()来找到当前位置!
例题
?PHP
$file=fopen("test.txt","r");//readfirstlinefgets($file);//movebacktobeginningoffilefseek($file,0);
?
rewind()函数将文件指针的位置倒回文件的开头。
若成功,则返回true。若失败,则返回false。
rewind(file)
file
必需。规定已打开的文件。
?PHP
$file=fopen("test.txt","r");
//改变文件指针的位置
fseek($file,"15");
//把文件指针设定为0
rewind($file);
fclose($file);
?
ftell():函数返回在打开文件中的当前位置
返回文件指针的当前位置,如果失败则返回FALSE。
ftell(file)ftell(file)
参数
描述
file
必需。规定要检查的已打开文件。
?PHP
$file=fopen("test.txt","r");//printcurrentpositionechoftell($file);//changecurrentpositionfseek($file,"15");//printcurrentpositionagainecho"br/".ftell($file);fclose($file);
?
//
文件的上传和下载
1.文件上传第一步
客服端需要写一个form表单,表单必须是post,还有一个enctype="multipart/form-data"必须设置这个属性
2.第二步服务器端的分析
服务器端用var_dump($_FILES)或者用print_r($_FILES)打印都可以,可以看到$_FILES中保存的上传文件的信息
name:上传文件的名称
type:上传文件的类型
tmp_name:上传到服务器的临时文件名
size:上传文件的大小
error:上传文件的错误号
3.将服务器的临时文件移动到指定的目录下
move_uploaded_file(tmp_name,"指定目录");返回值为boolcopy(tmp_name,"指定目录");返回值为bool
上传文件主要的几点要求:
1、文件上传服务器端的配置(如果是xampp,可以直接找php里面的PHP.init的配置文件)
file_upload=on支持北京治疗白癜风总共要多少钱白癜风治疗用什么方法