Vaya al Contenido
Saltar menú
SuperHispano
+34 012 345 678
info@example.com
España 03:19:18 sábado 07/02/26
Saltar menú
Saltar menú

PHP Copiar Archivos

Internet > PHP > Manejo de archivos

Copiar Archivos en PHP


Copiar archivos es una operación común en aplicaciones web que manipulan archivos, como cuando se quiere duplicar o hacer un respaldo de un archivo. PHP ofrece varias formas de copiar archivos, que van desde leer y escribir manualmente cada línea hasta el uso de funciones integradas que simplifican todo el proceso.

Método 1: Copiar un archivo línea por línea


El primer método implica leer un archivo línea por línea y escribir esas líneas en un nuevo archivo. Este método es útil si deseas procesar o modificar cada línea antes de copiarla.

Sintaxis básica:

fopen() se usa para abrir los archivos fuente y destino.
fgets() lee una línea del archivo fuente.
fputs() escribe la línea en el archivo de destino.

Ejemplo: Leer y escribir archivo línea por línea


<?php
$archivo_origen = fopen("archivo_fuente.txt", "r");
$archivo_destino = fopen("archivo_destino.txt", "w");

if ($archivo_origen && $archivo_destino) {
while (!feof($archivo_origen)) {
$linea = fgets($archivo_origen);
fputs($archivo_destino, $linea);
}
fclose($archivo_origen);
fclose($archivo_destino);
echo "Archivo copiado con éxito.";
} else {
echo "No se pudo abrir uno de los archivos.";
}
?>


Explicación:


fopen("archivo_fuente.txt", "r"): Abre el archivo fuente en modo de solo lectura.
fgets($archivo_origen): Lee una línea del archivo fuente.
fputs($archivo_destino, $linea): Escribe esa línea en el archivo de destino.
feof($archivo_origen): Verifica si se ha llegado al final del archivo fuente.

Este enfoque es útil cuando deseas realizar algún procesamiento en el contenido del archivo mientras lo copias.

Método 2: Usar file_get_contents() y file_put_contents()


El segundo método es mucho más simple y rápido. PHP proporciona dos funciones útiles: file_get_contents() para leer todo el contenido de un archivo en una cadena, y file_put_contents() para escribir esa cadena en un nuevo archivo.

Sintaxis básica:


file_get_contents(): Lee todo el contenido de un archivo y lo almacena en una variable.
file_put_contents(): Escribe una cadena en un archivo.

Ejemplo: Copiar un archivo con file_get_contents() y file_put_contents()


<?php
$archivo_origen = "archivo_fuente.txt";
$archivo_destino = "archivo_destino.txt";

$contenido = file_get_contents($archivo_origen);
file_put_contents($archivo_destino, $contenido);

echo "Archivo copiado con éxito.";
?>


Explicación:
file_get_contents($archivo_origen): Lee todo el contenido del archivo archivo_fuente.txt y lo almacena en la variable $contenido.
file_put_contents($archivo_destino, $contenido): Escribe el contenido leído en archivo_destino.txt.
Este método es ideal cuando no necesitas procesar cada línea individualmente, y simplemente deseas copiar el contenido completo de un archivo a otro.

Método 3: Usar la función copy()


El tercer método es el más directo y eficiente. PHP ofrece una función específica para copiar archivos: copy(). Esta función toma el archivo fuente y crea una copia en el destino especificado.

Sintaxis:


copy(string $from, string $to, ?resource $context = null): bool

$from: Ruta del archivo fuente.
$to: Ruta del archivo de destino.
$context (opcional): Un contexto de flujo que puede modificar el comportamiento de la función.

Ejemplo: Copiar un archivo con copy()


<?php
$archivo_origen = "archivo_fuente.txt";
$archivo_destino = "archivo_destino.txt";

if (copy($archivo_origen, $archivo_destino)) {
echo "Archivo copiado con éxito.";
} else {
echo "No se pudo copiar el archivo.";
}
?>


Explicación:
copy($archivo_origen, $archivo_destino): Copia todo el archivo archivo_fuente.txt al archivo archivo_destino.txt. Si la copia es exitosa, la función devuelve true.
Este método es ideal cuando simplemente necesitas copiar un archivo sin ningún procesamiento adicional. Es rápido, eficiente y fácil de usar.

Comparación de los métodos


Comparación de los métodos
Método Ventajas Desventajas
Línea por línea Control completo sobre el proceso de copia Más lento para archivos grandes
file_get_contents() y file_put_contents() Rápido y fácil para archivos pequeños y medianos Usa más memoria; no es adecuado para archivos grandes
copy() Método más sencillo y directo No permite manipular el contenido del archivo

Conclusión


PHP ofrece varias maneras de copiar archivos, desde la lectura y escritura manual de líneas hasta el uso de funciones nativas que simplifican el proceso. El método que elijas depende de tus necesidades: si necesitas modificar el contenido durante la copia, puedes usar el método línea por línea; si simplemente deseas copiar el archivo completo de manera rápida, copy() es la mejor opción.
+34 012 345 678
+34 012 345 678 (fax)
example@superhispano.com
Creado con WebSite X5
Regreso al contenido