Você está na página 1de 11




PHP 8.0.26 Released!


Change language: English Brazilian Portuguese Chinese (Simplified)
French German Japanese Russian Spanish Turkish
Other
Submit a Pull Request Report a Bug

Funções para Sistema de arquivo ¶


Veja Também
Para funções relacionadas, veja também as seções Deritório e Execução de Programas.

Para uma lista e descrição dos vários wrappers URL que podem ser utilizados como
arquivos remotos, veja em Protocolos e Wrappers suportados.

Índice ¶

 basename — Retorna apenas a parte que corresponde ao nome do arquivo de um


caminho/path
 chgrp — Modifica o grupo do arquivo
 chmod — Modifica as permissões do arquivo
 chown — Modifica o dono do arquivo
 clearstatcache — Limpa as informações em cache sobre arquivos
 copy — Copia arquivo
 delete — Veja unlink ou unset
 dirname — Retorna o caminho/path do diretório pai
 disk_free_space — Retorna o espaço disponível no sistema de arquivos ou partição de
disco
 disk_total_space — Retorna o tamanho total de um sistema de arquivos ou partição de
disco
 diskfreespace — Sinônimo de disk_free_space
 fclose — Fecha um ponteiro de arquivo aberto
 fdatasync — Synchronizes data (but not meta-data) to the file
 feof — Testa pelo fim-de-arquivo (eof) em um ponteiro de arquivo
 fflush — Força a liberação do buffer para um arquivo
 fgetc — Lê um caracter do ponteiro de arquivo
 fgetcsv — Lê uma linha do ponteiro de arquivos e a interpreta como campos CSV
 fgets — Lê uma linha de um ponteiro de arquivo
 fgetss — Ler uma linha de um ponteiro de arquivo e retira as tags HTML
 file_exists — Verifica se um arquivo ou diretório existe
 file_get_contents — Lê todo o conteúdo de um arquivo para uma string
 file_put_contents — Escreve dados em um arquivo
 file — Lê todo o arquivo para um array
 fileatime — Obtém o último horário de acesso do arquivo
 filectime — Obtém o tempo de modificação do inode do arquivo
 filegroup — Lê o grupo do arquivo
 fileinode — Lê o inode do arquivo
 filemtime — Obtém o tempo de modificação do arquivo
 fileowner — Lê o dono (owner) do arquivo
 fileperms — Lê as permissões do arquivo
 filesize — Obtém o tamanho do arquivo
 filetype — Lê o tipo do arquivo
 flock — Monitor de travamento de arquivos portátil
 fnmatch — Compara nome de arquivo com um padrão
 fopen — Abre um arquivo ou URL
 fpassthru — Imprime todo os dados restantes de um ponteiro de arquivo
 fputcsv — Formata a linha como CSV e a escreve em um ponteiro de arquivo
 fputs — Sinônimo de fwrite
 fread — Leitura binary-safe de arquivo
 fscanf — Interpreta a leitura de um arquivo de acordo com um formato
 fseek — Procura (seeks) em um ponteiro de arquivo
 fstat — Lê informações sobre um arquivo usando um ponteiro de arquivo aberto
 fsync — Synchronizes changes to the file (including meta-data)
 ftell — Retorna a posição de leitura/gravação do ponteiro do arquivo
 ftruncate — Reduz um arquivo a um tamanho especificado
 fwrite — Escrita binary-safe em arquivos
 glob — Acha caminhos que combinam com um padrão
 is_dir — Diz se o caminho é um diretório
 is_executable — Diz se um arquivo é executável
 is_file — Informa se o arquivo é um arquivo comum
 is_link — Diz se o arquivo é um link simbólico (symbolic link)
 is_readable — Diz se o arquivo existe e se ele pode ser lido
 is_uploaded_file — Diz se o arquivo foi enviado por POST HTTP
 is_writable — Diz se o arquivo pode ser modificado
 is_writeable — Sinônimo de is_writable
 lchgrp — Modifica o grupo do link simbólico
 lchown — Modifica o proprietário do link simbólico
 link — Criando um hard link
 linkinfo — Ler informações sobre um link
 lstat — Obtém informações sobre um arquivo ou link simbólico
 mkdir — Cria um diretório
 move_uploaded_file — Move um arquivo enviado para uma nova localização
 parse_ini_file — Interpreta um arquivo de configuração
 parse_ini_string — Interpreta uma string de configuração
 pathinfo — Retorna informações sobre um caminho de arquivo
 pclose — Fecha um processo de um ponteiro de arquivo
 popen — Abre um processo como ponteiro de arquivo
 readfile — Lê e exibe o conteúdo de um arquivo
 readlink — Retornar o alvo de um link simbólico
 realpath_cache_get — Obter entradas de cache do caminho absoluto
 realpath_cache_size — Obter o tamanho do cache do caminho absoluto
 realpath — Retorna o path absoluto canonicalizado
 rename — Renomeia um arquivo ou diretório
 rewind — Reinicializa a posição do ponteiro de arquivos para o início
 rmdir — Remove um diretório
 set_file_buffer — Sinônimo de stream_set_write_buffer
 stat — Obtem informações sobre um arquivo
 symlink — Cria um link simbólico
 tempnam — Cria um nome de arquivo único
 tmpfile — Cria um arquivo temporário
 touch — Muda o tempo de modificação do arquivo
 umask — Modificar a umask atual
 unlink — Apaga um arquivo

+add a note
User Contributed Notes 8 notes
up

down

60
Christian ¶
15 years ago
I just learned that, to specify file names in a portable manner, you
DON'T need 'DIRECTORY_SEPARATOR' - just use '/'. This really surprised
and shocked me, as until now I typed about a zillion times
'DIRECTORY_SEPARATOR' to stay platform independent - unnecessary.
Don't make the same mistake.

up

down

-2
drapeko.com ¶
13 years ago
You have an array of directories (straightforward list of
directories):

<?php
$array = array(
'/home/drapeko/var',
'/home/drapeko/var/y',
'/home/drapeko',
'/home',
'/var/libexec'
);
);
?>

And you would like to transform this array to hierarchy of


directories:

<?php
$array = array (
'home' => array (
'drapeko' => array (
'var' => array (
'y' => array()
)
)
),
'var' => array(
'libexec' => array()
)
);
?>

How can you do it?

First of all the below function will help us.

<?php
/**
* This function converts real filesystem path to the string array
representation.
*
* for example,
* '/home/drapeko/var/y will be converted to
$result_array['home']['drapeko']['var']['y']
* '/home/drapeko/var/y/file.txt will be converted to
$result_array['home']['drapeko']['var']['y']
*
* @param $path realpath of the directory
* @return string string array representation of the path
*/
function pathToArrayStr($path) {
// TODO constants/configs?

$res_path = str_replace(array(':/', ':\\', '/', '\\', DIRECTORY_SEPARA


TOR), '/', $path);
// if the first or last symbol is '/' delete it (e.g. for linux)

$res_path = preg_replace(array("/^\//", "/\/$/"), '', $res_path);


// create string
$res_path = '[\''.str_replace('/', '\'][\'', $res_path).'\']';

return $res_path;
}
?>

It simply converts the real path of the file to array string


representation.

How can you use this function? I know it looks like a little
confusing. But it's quite simple. Consider the example below:

<?php
$result = array();
$check = array();
foreach($array as $val) {
$str = pathToArrayStr($val, 'result');
foreach($check as $ck) {
if (strpos($ck, $str) !== false) {
continue 2;
}
}
$check[] = $str;
eval('$result'.$str.' = array();');
}
print_r($result);
?>

Heh, how do you find it? This approach has helped me very much. I hope
you will find it useful. :)

up

down

-3
tunnelareaten at gmail dot com ¶
17 years ago
I made this function to search and/or display files by extension or
for a string occurance in the filename. Any comments or enhancements
are welcome offcourse. I'll update this function soon.

usage: list_files([string], [string], [int 1 | 0], [int 1 | 0]);

search for extension: list_files([string], [string], [0], [int 1 |


0]);
returns array: $myArray = list_files([string], [string], [0], [0]);
echo result: list_files([string], [string], [0], [1]);

search for string occurance: list_files([string], [string], [1], [int


1 | 0]);
returns array: $myArray = list_files([string], [string], [1], [0]);
echo result: list_files([string], [string], [1], [1]);

<?php

function list_files($directory, $stringSearch, $searchHandler, $output


Handler) {
$errorHandler = false;
$result = array();
if (! $directoryHandler = @opendir ($directory)) {
echo ("<pre>\nerror: directory \"$directory\" doesn't
exist!\n</pre>\n");
return $errorHandler = true;
}
if ($searchHandler === 0) {
while (false !== ($fileName = @readdir ($directoryHandler))) {
if(@substr ($fileName, - @strlen ($stringSearch))
=== $stringSearch) {
@array_push ($result, $fileName);
}
}
}
if ($searchHandler === 1) {
while(false !== ($fileName = @readdir ($directoryHandler))) {
if(@substr_count ($fileName, $stringSearch) > 0) {
@array_push ($result, $fileName);
}
}
}
if (($errorHandler === true) && (@count ($result) === 0)) {
echo ("<pre>\nerror: no filetype \"$fileExtension\" found!\n</pre>\
n");
}
else {
sort ($result);
if ($outputHandler === 0) {
return $result;
}
if ($outputHandler === 1) {
echo ("<pre>\n");
print_r ($result);
echo ("</pre>\n");
}
}
}

?>

up

down

-6
mitra at mitra dot biz ¶
19 years ago
Pollard@php.net contributed this in response to a question on setting
these variables ...
This option *IS* settable within your PHP scripts.
Example:

<?php
ini_set('auto_detect_line_endings', true);
$contents = file('unknowntype.txt');

ini_set('auto_detect_line_endings', false);
$content2 = file('unixfile.txt');
?>

Note, with PHP 4.3 anytime Mac files are read using fgets or file
you'll need to auto_detect_line_endings since \n is otherwise
assumed. However, with PHP 5.0, stream_get_line() will allow you to
specify what line ending character to read up to.

\\ Read a line from a MAC file


stream_get_line($fp, 4096, "\r");
\\ Read a line from a UNIX file
stream_get_line($fp, 4096, "\n");

\\ Read a line from a DOS file


stream_get_line($fp, 4096, "\r\n");

\\ Read a line up to any filesystem line ending


ini_set('auto_detect_line_endings', true); fgets($fp);

\\ You can also make up your own line ending characters:


\\ Read up to the first instance of ":"
stream_get_line($fp, 4096, ":");

up

down

-7
Gregor Mosheh ¶
19 years ago
This function searches a directory and returns an array of all files
whose filename matches the specified regular expression. It's similar
in concept to the Unix find program.

function findfile($location='',$fileregex='') {
if (!$location or !is_dir($location) or !$fileregex) {
return false;
}

$matchedfiles = array();

$all = opendir($location);
while ($file = readdir($all)) {
if (is_dir($location.'/'.$file) and $file <> ".." and $file <>
".") {
$subdir_matches = findfile($location.'/'.$file,$fileregex);
$matchedfiles = array_merge($matchedfiles,$subdir_matches);
unset($file);
}
elseif (!is_dir($location.'/'.$file)) {
if (preg_match($fileregex,$file)) {
array_push($matchedfiles,$location.'/'.$file);
}
}
}
closedir($all);
unset($all);
return $matchedfiles;
}

$htmlfiles = findfile('/some/dir','/\.(htm|html)$/');

up
down

-9
jdhurn at uberidx dot com ¶
19 years ago
This is a function I use to determine if a file contains Binary
information. I use this for my search engine so that it doesn't try to
index files like .zip or .mp3 or any other file that doesn't contain
readable information. It makes use of the Character Type Extension if
it's loaded, if it's not then it uses Regular Expressions.

function is_binary($link)
{
$tmpStr = '';
@$fp = fopen($link, 'rb');
@$tmpStr = fread($fp, 256);
@fclose($fp);

if($tmpStr != '')
{
$tmpStr = str_replace(chr(10), '', $tmpStr);
$tmpStr = str_replace(chr(13), '', $tmpStr);

$tmpInt = 0;

for($i =0; $i < strlen($tmpStr); $i++)


{
if( extension_loaded('ctype') )
{
if( !ctype_print($tmpStr[$i]) )
$tmpInt++;
}
else
{
if( !eregi("[[:print:]]+", $tmpStr[$i]) )
$tmpInt++;
}
}

if($tmpInt > 5)
return(0);
else
return(1);
}
else
return(0);
}

up

down

-8
regis at webstuff dot com dot br ¶
19 years ago
Here is a useful function if you're having trouble writing raw bytes
into a file.

It receives an integer and returns an array containing the ASCII


values of the bytes on each index of the array.

function int2bytes($number){
$byte = $number;
$i=0;
do{
$dec_tmp = $byte;

$byte = bcdiv($byte,256,0);
$resto = $dec_tmp - (256 * $byte);
$return[] = $resto;
} while($byte >= 256);
if($byte) $return[] = $byte;
return array_reverse($return);
}

Example:

$arr = int2bytes(75832);

$arr will contain the following values:


Array
(
[0] => 1
[1] => 40
[2] => 56
)

Now, to write this data to the file, just use a fputs() with chr(),
just like this:

fputs($fp,chr($arr[0]).chr($arr[1]).chr($arr[2]))

-- Regis

up

down

-11
ob at babcom dot biz ¶
9 years ago
a function based on "tunnelareaten at gmail dot com"s idea to search
for files in a given directory by a searchstring or by fileextension.

I added support to search recursively through all sub-directories an


to determine weather the filepath should be returned or not.
<?php
// recursive function to get contents of given folder by searchterm or
fileextension
// (does not show folders)
// standards: Foldername: string
// Searchterm: string
// Searchtype: ext/search (file-
extension or searchterm within filename)
// SaveCompletePath: true/1
// usage: array FileSearch_r($Folder,$Search[,$SearchType,
$SavePath])

function FileSearch_r($Dir,$Search,$SearchType="search",$SavePath=1) {
$Array=array();
$D=dir($Dir);
while (false!==($Entry=$D->read()))
if ($Entry!='.' && $Entry!='..') {
$Entry=$Dir.$Entry;
if
(is_dir($Entry)) $Array=array_merge($Array,FileSearch_r($Entry.'/',
$Search,$SearchType,$SavePath));
else
if ($SearchType=="search"
?substr_count($Entry,$Search)>0
:($SearchType=="ext"
?substr($Entry,-strlen($Search))===$Search
:true))
$Array[]=$Entry;
}
$D->close();
sort($Array,SORT_STRING);
if(!(bool)
$SavePath) $Array=str_replace($Dir,"",array_values($Array));
return $Array;
}
?>

+add a note
 Filesystem
 Introdução
 Instalação/Configuração
 Constantes pré-definidas
 Funções para Sistema de arquivo

 Copyright © 2001-2022 The PHP Group


 My PHP.net

 Contact
 Other PHP.net sites
 Privacy policy

Você também pode gostar