<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_Operaci%C3%B3ns_con_ficheiros</id>
	<title>Curso POO PHP Operacións con ficheiros - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_Operaci%C3%B3ns_con_ficheiros"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Operaci%C3%B3ns_con_ficheiros&amp;action=history"/>
	<updated>2026-10-24T20:11:38Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Operaci%C3%B3ns_con_ficheiros&amp;diff=37001&amp;oldid=prev</id>
		<title>Vlourido: /* Sistema de ficheiros */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Operaci%C3%B3ns_con_ficheiros&amp;diff=37001&amp;oldid=prev"/>
		<updated>2013-10-23T11:39:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Sistema de ficheiros&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Operacións con ficheiros ==&lt;br /&gt;
&lt;br /&gt;
Coa distribución de PHP inclúense extensións que permiten traballar directamente co sistema de arquivos:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/book.filesystem.php Sistema de Ficheiros]&amp;#039;&amp;#039;&amp;#039; forma parte do núcleo de PHP, e inclúe funcións para ler, escribir, copiar, borrar, renomear, etc., ficheiros do sistema.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/book.dir.php Directorios]&amp;#039;&amp;#039;&amp;#039; tamén forma parte do núcleo de PHP, e como o seu nome indica permite traballar cos directorios do sistema de ficheiros.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[http://es1.php.net/manual/es/book.fileinfo.php Fileinfo]&amp;#039;&amp;#039;&amp;#039; inclúese por defecto coa distribución de PHP a partir da versión 5.3, aínda que debe ser activada no ficheiro de configuración php.ini. Inclúe funcións para descubrir o contido dos ficheiros.&lt;br /&gt;
&lt;br /&gt;
=== Sistema de ficheiros ===&lt;br /&gt;
&lt;br /&gt;
Dentro desta extensión inclúense un bo número de funcións. Entre outras, son moi empregadas &amp;#039;&amp;#039;&amp;#039;[http://es1.php.net/manual/es/function.basename.php basename]&amp;#039;&amp;#039;&amp;#039;, que dada unha ruta obtén o nome do arquivo ao que fai referencia (ou do último directorio se a ruta non inclúe arquivo), e &amp;#039;&amp;#039;&amp;#039;[http://es1.php.net/manual/es/function.dirname.php dirname]&amp;#039;&amp;#039;&amp;#039;, que opera xusto ao contrario devolvendo a ruta que se lle pasa sen o arquivo (ou o directorio pai no caso de que a ruta orixinal non incluira arquivo). Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
echo basename(&amp;#039;/var/www/blog/web/index.php&amp;#039;);  // Amosa index.php&lt;br /&gt;
echo basename(&amp;#039;/var/www/blog/web/&amp;#039;) . PHP_EOL;  // Amosa web&lt;br /&gt;
echo dirname(&amp;#039;/var/www/blog/web/index.php&amp;#039;) . PHP_EOL;  // Amosa /var/www/blog/web&lt;br /&gt;
echo dirname(&amp;#039;/var/www/blog/web/&amp;#039;) . PHP_EOL;  // Amosa /var/www/blog&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A forma máis sinxela de ler o contido dun ficheiro dende PHP é empregando a función &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/function.file-get-contents.php file_get_contents]&amp;#039;&amp;#039;&amp;#039;, que pasa o contido do ficheiro a unha cadea, ou a función &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/function.file.php file]&amp;#039;&amp;#039;&amp;#039;, que pasa o contido do ficheiro a un array (cada liña do ficheiro pasa a ser un elemento do array).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$fich = file_get_contents(&amp;quot;proba.txt&amp;quot;);&lt;br /&gt;
if($fich === false) die(&amp;quot;ERRO! Non se puido encontrar o ficheiro.&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Calquera das dúas funcións admiten como parámetros ficheiros remotos empregando os protocolos HTTP ou FTP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$fich = file_get_contents(&amp;quot;http://www.google.es&amp;quot;);&lt;br /&gt;
if($fich === false) die(&amp;quot;ERRO! Non se puido encontrar a páxina.&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Igualmente, para escribir un ficheiro a forma máis sinxela é empregar a función &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/function.file-put-contents.php file_put_contents]&amp;#039;&amp;#039;&amp;#039;, que pasa o contido dunha cadea a un ficheiro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$fich = file_put_contents(&amp;quot;proba.txt&amp;quot;, &amp;quot;Contido a escribir no ficheiro&amp;quot;);&lt;br /&gt;
if($fich === false) die(&amp;quot;ERRO! Non se puido crear o ficheiro.&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Outro xeito de ler e escribir o contido dun ficheiro é empregar as funcións herdadas da linguaxe C, entre outras: [http://docs.php.net/manual/es/function.fopen.php fopen], [http://docs.php.net/manual/es/function.fread.php fread], [http://docs.php.net/manual/es/function.fwrite.php fwrite], [http://docs.php.net/manual/es/function.fgets.php fgets], [http://docs.php.net/manual/es/function.fputs.php fputs], [http://docs.php.net/manual/es/function.fseek.php fseek], [http://docs.php.net/manual/es/function.feof.php feof] e [http://docs.php.net/manual/es/function.fclose.php fclose]. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$fich = fopen(&amp;quot;proba.txt&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if($fich === false) die(&amp;quot;ERRO! Non se puido ler o ficheiro.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
while(!feof($fich)) {&lt;br /&gt;
  $line = fgets($fich);&lt;br /&gt;
  echo $line;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Directorios ===&lt;br /&gt;
&lt;br /&gt;
A extensión &amp;#039;&amp;#039;&amp;#039;Directorios&amp;#039;&amp;#039;&amp;#039; é semellante á anterior, pero centrándose no traballo cos directorios e o seu contido. Inclúe unha serie de funcións que poden funcionar de dous xeitos:&lt;br /&gt;
&lt;br /&gt;
* Empregando variables de tipo &amp;#039;&amp;#039;resource&amp;#039;&amp;#039; para facer referencia a un directorio. Cando se abre un directorio empregando a función &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/function.opendir.php opendir]&amp;#039;&amp;#039;&amp;#039;, obtense unha variable que se pode empregar posteriormente nos accesos a ese mesmo directorio. Deste xeito podemos ter varios directorios abertos ao mesmo tempo, cadanseu coa sus propia variable.&lt;br /&gt;
&lt;br /&gt;
:Se non precisamos traballar con varios directorios de forma simultánea, podemos obviar a variable devolta por &amp;#039;&amp;#039;opendir&amp;#039;&amp;#039;. As posteriores chamadas as outras funcións como &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/function.readdir.php readdir]&amp;#039;&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/function.closedir.php closedir]&amp;#039;&amp;#039;&amp;#039; actuarán sobre o recurso aberto na última chamada a &amp;#039;&amp;#039;opendir&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (opendir(&amp;#039;.&amp;#039;) !== false) {&lt;br /&gt;
    while (($item = readdir()) !== false) {&lt;br /&gt;
        echo $item . &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    closedir();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Abrendo o directorio coa función &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/function.dir.php dir]&amp;#039;&amp;#039;&amp;#039; e empregando posteriormente as propiedades e os métodos do obxecto da &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/class.directory.php clase Directory]&amp;#039;&amp;#039;&amp;#039; devolto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (($d = dir(&amp;#039;.&amp;#039;)) !== false) {&lt;br /&gt;
    while (($item = $d-&amp;gt;read()) !== false) {&lt;br /&gt;
        echo $item . &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    $d-&amp;gt;close();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Iteradores do sistema de ficheiros ===&lt;br /&gt;
&lt;br /&gt;
A partir da versión 5 de PHP inclúese coa distribución a &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/book.spl.php biblioteca estándar (SPL)]&amp;#039;&amp;#039;&amp;#039;, que está formada por un conxunto de clases e interfaces de uso común. Entre eles temos a clase iterador &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.directoryiterator.php DirectoryIterator]&amp;#039;&amp;#039;&amp;#039;, que permite percorrer de forma sinxela os obxectos do sistema de ficheiros. Por exemplo, para listar os ficheiros e directorios na ruta na que se atopa o script, poderías facer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
foreach (new DirectoryIterator(&amp;#039;.&amp;#039;) as $fich) {&lt;br /&gt;
    if($fich-&amp;gt;isDot()) continue;&lt;br /&gt;
    echo $fich-&amp;gt;getFilename() . &amp;quot;&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A partires de PHP5.3 inclúese tamén o iterador &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.filesystemiterator.php FilesystemIterator]&amp;#039;&amp;#039;&amp;#039;, que herda de DirectoryIterator extendendo a súa funcionalidade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Vlourido|Víctor Lourido]] 16:08 15 jul 2013 (CEST)&lt;/div&gt;</summary>
		<author><name>Vlourido</name></author>
	</entry>
</feed>