您好,欢迎访问一九零五行业门户网

PHP 文件系统

文件?理函?
1.文件操作.
打开文件:
打?指定的文件返回相?的?象,若不存在指定的文件,那?可能?自建文件。
resource fopen(string filename,string mode [,int use_include_path][,resource context]);
filename 可以是包含文件路径的文件名,也可以是某种协议给出的url(打开远程文件).为了避免系统切换带来的麻烦,采用'/'作为路径分隔符.
mode: 设置打开文件的方式,分别有:
r:只读模式,文件指针位于文件头部.  
r+:只读模式----读/写模式,文件指针位于头部文件.注意可能产生覆盖.
w:只写模式,文件指针位于文件头部.如果文件存在,删除内容重写;否则,自行创建文件.
w+:只写模式----读写文件,读/写文件指针指向文件头部.如果文件存在,删除内容重写;否则,自行创建文件.
x:谨慎写----写模式打开文件,从文件头部开始写如.如果文件存在,返回false,产生一个e_warning级别的错误信息
x+:谨慎写---读写模式代开文件.如果文件存在,返回false,产生一个e_warning级别的错误信息
a:追加,文件指针指向文件尾部.如果文件存在,则直接在文件尾追加;否则,自行创建文件.
a+:追加,文件指针指向文件尾部.如果文件存在,则直接在文件尾追加或者读取;否则,自行创建文件.
b:二进制模式.用于与其他模式进行链接.(windows 下的选项)
t: 用于与其他模式进行结合.(windows 下的选项)
请慎用fopen()函数,因为一不小心就有可能将文件删除掉.同时,不同的操作系统具有不同的行结束习惯(unix:\n     windows:\r\n  macinitosh:\r).如果错误的使用行结束符,那么当打开文件时,可能输出一堆乱码.以上可以通过't','b'来避免.
读取文件:
string fgetc(resource handle);//返回从handle指向的文件中的一个字符.如果遇到eof,则返回false;
string fgets(int handle[,int length]);//从文件指针指向的位置获取一行字符,并且返回最大为length-1个字节的字符串..文件指针必须有效,且指向一个由fopen()或fsockopen()成功打开的文件.length表示读取的数据的长度.在遇到换行,eof,或者指定length时结束.忽略length将读到行结束.
string fgetss(resource handle[,int length][,string allowable_tags]);//读取一行,且过滤掉html,php标记.
string fread(int handle,int length);//?文件中?取任意?度的。,?可以用於?取二?制文件。handle ?指向文件的?源,length ?取length?字?或者遇到eof?停止?行。
例子:
readfile(),file()和file_get_contents()函?.
int readfile(string filename[,bool use_include_path,resource context]);//?取一?文件入到?,如果成功,?返回?取的字,否?返回false。filename文件名。use_include_path控制是否支持在include_path中搜索文件,true?支持。使用readfile函?不需要打?/文件。
array file(string filename [,bool use_include_path[,resource context]]);//?整?文件的?容?取到中。如果成功,返回,中的每?元素都是文件中的一行,包活?行符在?;否?返回false;
  string file_get_contents(string filename[,bool use_include_path[,resource context[,int offset[,int maxlen]]]]);//context ?5.0新增的?容,可以用null?忽略。offset,maxlen?5.1的的?容。offset 用於文件?始的位置,maxlen ?置文件?取的?度。?方法?用於二?制文件的?取。是?文件?容?入到一?字符串的首?方法。如果操作系?支持,使用?存映射技增?性能。如果打?有特殊字符的url(例如存在空格),那?要使用urlencode()行url。
:readfile(),file()和file_get_contents()在?取整?文件?中的?容?,不需要使用fopen()和fclose()函?,但是在?取一?字符,一行字符和任意?的字符必?使用。
2.?入文件:
int fwrite(resource handle,string[,int length]);//?行文件的?入操作,它?有一名fputs().?方法用於把string的?容?入文件指?handle?。如果?置length,那入length?字?或者完成string?入後,操作就?停止。成功?入?返回true,否?返回false。
:若?出length,那?php.ini文件中的magic_quotes_runtime被忽略,而string中的斜不?被抽去。?分二?制文件和文本文件系在打?文件?fopen()函?的mode要加上‘b’。
int file_put_contents(string filename,string data[.int flags[,resource context]]);//?一?字符串?入文件中,如果成功?返回字,否?返回false。flags:?文件的?定(有 file_use_include_path,file_append:追加,lock_ex:?定)。context一?context?源。
:fwrite()?然具入文件的功能,但是必?有fopen()和fclose()函?的支持。file_put_contents()整合了fopen(),fwrite(),fclose()功能,可以完成文件的?入。
3.文件
文件有打?就有功能,?文件的操作?束後,文件,否?可能引起。
bool fclose(resouce handle);//?handle指向的文件,如果成功?返回true,否?返回false。
?定文件
在向一?文本文件中?入的?候,需要先?定文件,已防止其他用?同?也修改此文件的?容。php中通?flock()函?文件的?定。
 bool flock(int handle ,int operation);//operation控制?定?限。包括:lock_sh:取得共享?定(?取程序)。lock_ex:取得?定(?入)。lock_un:?放?定。lock_nb:防止flock()函?在?定?堵塞。
目理函? 目?是一?特殊的文件。既然是文件,如果?其?行操作,同?必?先打?,然後才可以?行操作,最後?要?得。
1.打?目?
打?指定的目?文件,若果成功,?返回目?的句柄。否?返回false。?打?文件不同的是,若目?不存在,它?不?自建目?,而是?出一?信息。通?在opendir()函?前加“@”符?,可以屏蔽信息的?出。
resource opendir(string path[,resource context]);//path指定要打?的目?文件。如果path指定的不是一?有效的目?,或者因限,文件系?不能打?,那函?返回false,?且?生一?e_warning的信息。
2.目?
 利用opendir函?返回的句柄配合scandir函?操作。
array scandir(string directory[,int sorting_ordering[,resource context]]);//用於指定路?下的目?和文件。如果成功?返回包含文件名的array,否?返回false。directory指定要的目?,如果不是目?,那返回false,?且?生一?e_warning的信息。sorting_order?置排列?序,默字母升序排列。如果?上?,?降序排列。
:is_dir()函?,判?指定文件名是否一?目?。如果文件名存在且?目?,?返回true,否?返回false。如果是相?目?,?按照?前工作目查其相?路?。
3.目?。
void closedir(resource handle);//handle,要的工作目?的句柄。
:前面已?了解到,若打?的目?不存在,系不我建目?。那?我?可以自行?建想要的目?。可以?用以下函?:
mkdir()函?:新建一?目?,成功?返回true,否?false。
rmdir()函?:?除目?。目?必空(目?中?文件或者子目?),且要有操作的?限。
unlink()函?:?除文件,成功?返回true,失?返回false。
文件上?、下?原理 步容:
步?1:控制上?文件,通?php.ini文件配置。
步?2:?上?文件?行判?。上?文件的大小,格式等。
步?3:?行上?文件的操作方法。
1.控制上?文件:
php通php.ini?上?文件?行控制,包括:是否支持上?、上?文件的目?、上?文件的大小、指令?行的?指令分配的?存空?。
在php.ini文件中定位到file uploads,完成?上述的?置。含?如下:
file_uploads:如果是on,?明服?器支持文件上?,如果?off,?不支持。一般默?是支持的,此不必修改。
upload_tem_dir:上?文件的目?。在文件上?成功之前,文件首先保存在服?器的目?中。多?使用系?默?目?,但是也可以自行?置。
upload_max_filesize:服?器允?上?文件的最大值,以mb位。系?默2mb,若超?修改其值。
max_execution_time:php中一?指令所能?行的最?,?位是秒。?指令在?行上?超大文件?必?修改,否?及?上?文件在服?器允?的?,但是超?指令所能?行的最?,仍然?法上?。
memory_limit:php中一?指令所分配的?存空?,?位?mb。它的大小同影?到超大文件的上?。
:在客?端中控制上?文件?用的?form表?中的enctype和method?性,以及?藏域max_file_size.
enctype=multipart/form-data:指定表?方式。
method=post:指定的方式。
:通藏域控制上?文件的大小,?位?字?。?值不能超?php.ini配置文件中的upload_max_filesize?置的值。它不能完全控制上?文件的大小,只能避免一些不必要的麻?。
2.判?上?文件
?上?文件?行判用的是全局?量$_files,$_files是一?,它包含所有上?文件的信息。中各?元素含?如下:
$_files[filename][name]:存?上?文件的文件名,如text.txt,title.jpg等。
$_files[filename][size]:存?文件的大小,?位?字?。
$_files[filename][tem_name]:存?文件在目?中使用的文件名,因?文件在上首先要?其以文件的身份存?在目?中。
$_files[filename][type]:存?上?文件的mime?型。mime?定各?文件格式的?型,每?mime?型都?由“/”分隔的主?型和子?型?成。例如:image/gif的主?型像,子?型?gif格式的文件。text/html代表文本的html文件。
$_files[filename][error]:存?文件上?的代?:此?目?php4.2.0版本中新增?容。它的返回值由5?:
0:表示?有任何。文件上?成功。
1:表示上?文件的大小超出配置文件指令upload_max_filesize的限定值。
2:表示上?文件的大小超出html表?中max_file_size所指定的值。
3:表示文件只被上?了一部分。
4:表示?有上?任何文件。
例子:
3.文件上?。
php中?用move_uploaded_file()函?文件上?。但在?行之前,?了防止?在的攻原本不能通本交互的文件?行非法管理,可以先?用is_uploaded_file()函?判?指定的文件是否通?http post上?的,如果是?返回true。通函?,可以?保?意的用法欺本去不能的文件。
 bool is_uploaded_file(string name);//用於判?指定的文件是否通?http post上?的。filename必似於$_files[‘filename’][‘temp_name’]的?量,不可以使用?客?端上?的文件名$_files[‘filename’][‘name’]。
 move_upload_file(string filename,string destination);//?函?用於?文件上?到服?器中指定的位置。如果成功,?返回true,否?返回false。filename指定上?文件的文件名,即$_files['tmp_name'],destination指定文件上?後保存的新路?和名?。如果不是合法的上?文件,不?出?任何操作,?函返回false。如果是合法的上?操作,但是由於某些原因?法移?,?不?出?任何操作,返回false的同出一?警告。
0){ echo 上?!; switch($_files['up_picture']['error']){ case 1: echo 上?文件超出配置文件?定值; break; case 2: echo 上?文件超出表定值; break; case 3: echo 上?文件不全; break; case 4: echo ?有上?文件; break; } }else{ if( ! is_dir('./upfile/') ) mkdir('./upfile/'); $path='./upfile/'.time().$_files['up_picture' ][ 'name' ]; if( is_uploaded_filed( $_files['up_picture' ][ 'tmp_name' ] )){ if(!move_uploaded_file( $_files['up_picture' ][ 'tmp_name' ] ,$path )){ echo 上?失?!; }else{ echo 文件.time().$_files['up_picture' ][ 'name' ] .上?成功,大小?:.$_files['up_picture' ][ 'size' ] ; } }else{ echo 上?文件.$_files['up_picture' ][ 'name' ].不合法; } } }?>
4.文件下?
介?通?http方式下?文件,主要用到header()函?。header()函於http函?,其作用是以http?html文?的表?送到器,?告?器具?怎理?面。
void header(string string[,bool replace[,int http_respone_code]]);//string 指定?送的。replace控制如果一次?送多?,?於相似的是替是添加。如果是false,制?送多?同?型的,默true。http_respone_code?制?http代置?指定值:
下?步?如下:
a):通?content-type 指定文件的mime?型。
b):通?content-disposition ?文件?行描述,值attachment;filename=test.jpg ?明是一?福建,同?指定下?文件的名?。
c):通?content-length ?置下?文件的大小。
d):通?readfile()函取文件?容。
例如:header('content-type:image/jpg');header(' content-disposition:attachment;filename=test.jpg ');header('content-length:'.filesize('test.jpg') );readfile('test.jpg');
5.?程文件
步?1:配置 php.ini 文件 allow_url_fopen?置?on。默?是的,允?打?http和ftp指定的?程文件。如果 allow_url_fopen?置?off,?不允?打程文件。
步?2:使用fopen()函取文件?容。根容?建你想要的?源,保存到本地。
ps:更多php.ini配置文件中的文件操作 和 目?操作的?展方法考官方php指南。
其它类似信息

推荐信息