{"id":1034,"date":"2024-05-20T19:41:02","date_gmt":"2024-05-20T22:41:02","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=1034"},"modified":"2025-12-02T16:27:57","modified_gmt":"2025-12-02T19:27:57","slug":"utilidades-sistema-de-arquivos","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/","title":{"rendered":"Utilidades Sistema de Arquivos"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Utilidades Sistema de Arquivos<\/strong>: O <strong>PHP<\/strong> oferece um conjunto robusto de fun\u00e7\u00f5es que permitem interagir diretamente com o <strong>sistema de arquivos<\/strong> do servidor, uma funcionalidade essencial para qualquer aplica\u00e7\u00e3o web que precise ler configura\u00e7\u00f5es, registrar logs, armazenar dados ou gerenciar <em>uploads<\/em> de usu\u00e1rios.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Dominar a manipula\u00e7\u00e3o de arquivos e diret\u00f3rios \u00e9 crucial para criar sistemas de gerenciamento de conte\u00fado e lidar com dados persistentes.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. \ud83d\udcd6 Leitura e Escrita de Arquivos (Conte\u00fado Direto)<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">As fun\u00e7\u00f5es <strong><code>file_get_contents()<\/code><\/strong> e <strong><code>file_put_contents()<\/code><\/strong> s\u00e3o as formas mais simples e r\u00e1pidas de interagir com arquivos pequenos, pois lidam com a abertura e o fechamento do arquivo automaticamente.<\/p>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Fun\u00e7\u00e3o<\/strong><\/td><td><strong>Prop\u00f3sito<\/strong><\/td><td><strong>Exemplo PHP<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>file_get_contents(caminho)<\/code><\/strong><\/td><td>L\u00ea o <strong>conte\u00fado inteiro<\/strong> de um arquivo e o retorna como uma <em>string<\/em>.<\/td><td><code>$conteudo = file_get_contents(\"config.json\");<\/code><\/td><\/tr><tr><td><strong><code>file_put_contents(caminho, dado)<\/code><\/strong><\/td><td>Escreve o <code>$dado<\/code> no arquivo, <strong>substituindo<\/strong> o conte\u00fado existente.<\/td><td><code>file_put_contents(\"log.txt\", \"Novo registro.\");<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo de Uso R\u00e1pido<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ Escrever em um arquivo\nfile_put_contents(\"novo_arquivo.txt\", \"Este \u00e9 o novo conte\u00fado.\");\n\n\/\/ Ler e exibir o conte\u00fado\n$conteudo = file_get_contents(\"novo_arquivo.txt\");\necho $conteudo; \n?&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. \ud83d\uddc2\ufe0f Manipula\u00e7\u00e3o de Arquivos por Fluxo (Ponteiros)<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para arquivos muito grandes ou para opera\u00e7\u00f5es sequenciais (como leitura bloco a bloco ou escrita incremental), voc\u00ea deve usar as fun\u00e7\u00f5es baseadas em ponteiros (fluxo).<\/p>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Fun\u00e7\u00e3o<\/strong><\/td><td><strong>Prop\u00f3sito<\/strong><\/td><td><strong>Exemplo PHP<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>fopen(caminho, modo)<\/code><\/strong><\/td><td><strong>Abre<\/strong> o arquivo no modo especificado (<code>\"r\"<\/code> para leitura, <code>\"w\"<\/code> para escrita\/cria\u00e7\u00e3o, <code>\"a\"<\/code> para anexar\/append).<\/td><td><code>$arquivo = fopen(\"dados.txt\", \"r\");<\/code><\/td><\/tr><tr><td><strong><code>fread(ponteiro, bytes)<\/code><\/strong><\/td><td><strong>L\u00ea<\/strong> um n\u00famero espec\u00edfico de bytes.<\/td><td><code>$dados = fread($arquivo, 1024); \/\/ L\u00ea 1KB<\/code><\/td><\/tr><tr><td><strong><code>fwrite(ponteiro, dado)<\/code><\/strong><\/td><td><strong>Escreve<\/strong> uma <em>string<\/em> no arquivo.<\/td><td><code>fwrite($arquivo, \"Novo Log\\n\");<\/code><\/td><\/tr><tr><td><strong><code>fclose(ponteiro)<\/code><\/strong><\/td><td><strong>Fecha<\/strong> o arquivo e libera o recurso.<\/td><td><code>fclose($arquivo);<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo de Fluxo (Escrita)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n$ponteiro = fopen(\"log.txt\", \"a\"); \/\/ Abre para anexar (append)\nfwrite($ponteiro, \"Acesso em \" . date(\"Y-m-d H:i:s\") . \"\\n\");\nfclose($ponteiro); \/\/ Sempre feche o ponteiro!\n?&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. \ud83d\udcc2 Fun\u00e7\u00f5es de Diret\u00f3rio<\/h2>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Fun\u00e7\u00e3o<\/strong><\/td><td><strong>Prop\u00f3sito<\/strong><\/td><td><strong>Exemplo PHP<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>mkdir(caminho)<\/code><\/strong><\/td><td>Cria um <strong>novo diret\u00f3rio<\/strong>.<\/td><td><code>mkdir(\"novo_diretorio\");<\/code><\/td><\/tr><tr><td><strong><code>rmdir(caminho)<\/code><\/strong><\/td><td>Remove um diret\u00f3rio, mas ele <strong>deve estar vazio<\/strong>.<\/td><td><code>rmdir(\"diretorio_vazio\");<\/code><\/td><\/tr><tr><td><strong><code>scandir(caminho)<\/code><\/strong><\/td><td>Retorna um <strong>array<\/strong> com os arquivos e diret\u00f3rios dentro de um caminho.<\/td><td><code>$arquivos = scandir(\"uploads\");<\/code><\/td><\/tr><tr><td><strong><code>is_dir(caminho)<\/code><\/strong><\/td><td>Verifica se o caminho especificado \u00e9 um <strong>diret\u00f3rio<\/strong>.<\/td><td><code>if (is_dir(\"uploads\")) { ... }<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. \ud83d\udd0d Verifica\u00e7\u00e3o e Metadados<\/h2>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Fun\u00e7\u00e3o<\/strong><\/td><td><strong>Prop\u00f3sito<\/strong><\/td><td><strong>Exemplo PHP<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>file_exists(caminho)<\/code><\/strong><\/td><td>Verifica se um arquivo ou diret\u00f3rio <strong>existe<\/strong>.<\/td><td><code>if (file_exists(\"config.php\")) { ... }<\/code><\/td><\/tr><tr><td><strong><code>is_file(caminho)<\/code><\/strong><\/td><td>Verifica se o caminho \u00e9 um <strong>arquivo regular<\/strong>.<\/td><td><code>if (is_file(\"dados.txt\")) { ... }<\/code><\/td><\/tr><tr><td><strong><code>filesize(caminho)<\/code><\/strong><\/td><td>Retorna o <strong>tamanho<\/strong> do arquivo em <strong>bytes<\/strong>.<\/td><td><code>echo filesize(\"imagem.jpg\");<\/code><\/td><\/tr><tr><td><strong><code>filemtime(caminho)<\/code><\/strong><\/td><td>Retorna o <strong>hor\u00e1rio da \u00faltima modifica\u00e7\u00e3o<\/strong> (timestamp).<\/td><td><code>$modificacao = filemtime(\"dados.txt\");<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. \u23eb Upload de Arquivos: A Superglobal <code>$_FILES<\/code><\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para processar arquivos enviados atrav\u00e9s de um formul\u00e1rio HTML, voc\u00ea precisa da <em>superglobal<\/em> <strong><code>$_FILES<\/code><\/strong>.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Formul\u00e1rio HTML (Obrigat\u00f3rio)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O formul\u00e1rio deve ter o atributo <strong><code>enctype=\"multipart\/form-data\"<\/code><\/strong> e o m\u00e9todo <strong><code>POST<\/code><\/strong>.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">HTML<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;form action=\"upload.php\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n    Selecione o arquivo: &lt;input type=\"file\" name=\"arquivo_usuario\"&gt;\n    &lt;input type=\"submit\" value=\"Enviar\"&gt;\n&lt;\/form&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Estrutura da <code>$_FILES<\/code><\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Se o nome do campo no HTML for <code>arquivo_usuario<\/code>, a superglobal ter\u00e1 a seguinte estrutura ap\u00f3s o envio:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$_FILES&#91;'arquivo_usuario'] = &#91;\n    'name' =&gt; 'nome_original.jpg', \/\/ Nome original do arquivo no cliente\n    'type' =&gt; 'image\/jpeg',        \/\/ Tipo MIME do arquivo\n    'tmp_name' =&gt; '\/tmp\/phpXyZ',   \/\/ Caminho tempor\u00e1rio no servidor\n    'error' =&gt; 0,                  \/\/ C\u00f3digo de erro (0 = sucesso)\n    'size' =&gt; 123456               \/\/ Tamanho do arquivo em bytes\n];\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Processamento e Movimenta\u00e7\u00e3o Segura<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">A fun\u00e7\u00e3o <strong><code>move_uploaded_file()<\/code><\/strong> \u00e9 a \u00fanica forma segura de mover um arquivo do diret\u00f3rio tempor\u00e1rio para o local permanente no seu sistema.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nif (isset($_FILES&#91;'arquivo_usuario']) &amp;&amp; $_FILES&#91;'arquivo_usuario']&#91;'error'] == UPLOAD_ERR_OK) {\n    \n    $nome_arquivo = basename($_FILES&#91;'arquivo_usuario']&#91;'name']); \/\/ Limpeza b\u00e1sica de nome\n    $tmp_name = $_FILES&#91;'arquivo_usuario']&#91;'tmp_name'];\n    $destino = \"uploads\/\" . $nome_arquivo; \n    \n    \/\/ Move de forma segura o arquivo tempor\u00e1rio para o destino final\n    if (move_uploaded_file($tmp_name, $destino)) {\n        echo \"Arquivo $nome_arquivo enviado com sucesso!\";\n    } else {\n        echo \"Erro ao mover arquivo.\";\n    }\n}\n?&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">6. \u26a0\ufe0f Seguran\u00e7a e Boas Pr\u00e1ticas<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Valida\u00e7\u00e3o Rigorosa:<\/strong> <strong>Nunca<\/strong> confie apenas no tipo (<code>type<\/code>) fornecido pelo navegador. Valide o <strong>tamanho<\/strong> (<code>size<\/code>) e o tipo de arquivo no servidor (verificando a extens\u00e3o ou usando a extens\u00e3o <strong>Fileinfo<\/strong> para MIME types reais).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Permiss\u00f5es (Perms):<\/strong> O diret\u00f3rio de <em>uploads<\/em> (<code>uploads\/<\/code> no exemplo) deve ter permiss\u00f5es de escrita para o usu\u00e1rio que executa o PHP (geralmente <code>www-data<\/code> ou <code>apache<\/code>).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Renomea\u00e7\u00e3o:<\/strong> Para evitar ataques de diret\u00f3rio e colis\u00f5es, <strong>sempre renomeie<\/strong> o arquivo no servidor (ex: usando um <code>uniqid()<\/code> ou um <em>hash<\/em>) em vez de confiar no nome original.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 Conclus\u00e3o Utilidades Sistema de Arquivos<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Utilidades Sistema de Arquivos<\/strong>: A capacidade de interagir com o sistema de arquivos via <strong><code>file_get_contents<\/code>\/<code>file_put_contents<\/code><\/strong> e as fun\u00e7\u00f5es de fluxo (<code>fopen<\/code>, <code>fread<\/code>, etc.) \u00e9 fundamental para a persist\u00eancia de dados. Al\u00e9m disso, a <em>superglobal<\/em> <strong><code>$_FILES<\/code><\/strong> e a fun\u00e7\u00e3o <strong><code>move_uploaded_file()<\/code><\/strong> s\u00e3o as ferramentas essenciais para implementar <em>uploads<\/em> de arquivos de forma segura e eficiente em qualquer aplica\u00e7\u00e3o PHP.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Toda jornada tem um in\u00edcio, e o in\u00edcio para se tornar um desenvolvedor back-end \u00e9 dominar as seguintes tecnologias, que voc\u00ea encontra aqui mesmo:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/sql\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp\" alt=\"SQL\" class=\"wp-image-942\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">SQL<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/php\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" alt=\"Capa Curso PHP\" class=\"wp-image-2835\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">PHP<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/laravel\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp\" alt=\"Laravel\" class=\"wp-image-1642\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">Laravel<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.webp\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.webp\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>Utilidades Sistema de Arquivos: O PHP oferece um conjunto robusto de fun\u00e7\u00f5es que permitem interagir&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2835,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-1034","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","wpcat-11-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Utilidades Sistema de Arquivos - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Utilidades Sistema de Arquivos: Neste artigo, exploraremos as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com o sistema de arquivos em ...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Utilidades Sistema de Arquivos - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Utilidades Sistema de Arquivos: Neste artigo, exploraremos as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com o sistema de arquivos em ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-20T22:41:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-02T19:27:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Utilidades Sistema de Arquivos\",\"datePublished\":\"2024-05-20T22:41:02+00:00\",\"dateModified\":\"2025-12-02T19:27:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/\"},\"wordCount\":615,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Capa-PHP.png\",\"articleSection\":[\"PHP\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/\",\"name\":\"Utilidades Sistema de Arquivos - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Capa-PHP.png\",\"datePublished\":\"2024-05-20T22:41:02+00:00\",\"dateModified\":\"2025-12-02T19:27:57+00:00\",\"description\":\"Utilidades Sistema de Arquivos: Neste artigo, exploraremos as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com o sistema de arquivos em ...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Capa-PHP.png\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Capa-PHP.png\",\"width\":758,\"height\":426,\"caption\":\"PHP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/utilidades-sistema-de-arquivos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Utilidades Sistema de Arquivos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Utilidades Sistema de Arquivos - BLOG THIAGO ROSSI","description":"Utilidades Sistema de Arquivos: Neste artigo, exploraremos as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com o sistema de arquivos em ...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/","og_locale":"pt_BR","og_type":"article","og_title":"Utilidades Sistema de Arquivos - BLOG THIAGO ROSSI","og_description":"Utilidades Sistema de Arquivos: Neste artigo, exploraremos as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com o sistema de arquivos em ...","og_url":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2024-05-20T22:41:02+00:00","article_modified_time":"2025-12-02T19:27:57+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","type":"image\/png"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Utilidades Sistema de Arquivos","datePublished":"2024-05-20T22:41:02+00:00","dateModified":"2025-12-02T19:27:57+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/"},"wordCount":615,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","articleSection":["PHP"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/","url":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/","name":"Utilidades Sistema de Arquivos - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","datePublished":"2024-05-20T22:41:02+00:00","dateModified":"2025-12-02T19:27:57+00:00","description":"Utilidades Sistema de Arquivos: Neste artigo, exploraremos as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com o sistema de arquivos em ...","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","width":758,"height":426,"caption":"PHP"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/utilidades-sistema-de-arquivos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Utilidades Sistema de Arquivos"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1034"}],"version-history":[{"count":1,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1034\/revisions"}],"predecessor-version":[{"id":5083,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1034\/revisions\/5083"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/2835"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}