Manipulação de arquivos em C++

Neste breve artigo faço uma apresentação do conceito de arquivos, como o sistema operacional os encara, em especial em sistemas Linux e como é sua manipulação em C++, com códigos de exemplo de leitura e/ou gravação dos mesmos.

[ Hits: 125.991 ]

Por: Matheus Santana Lima em 13/11/2008


O que são arquivos?



Arquivo é um recurso que o sistema operacional promove e que as linguagens de programação tem acesso. É uma abstração que simplifica a criação e manipulação de dispositivos de entrada e saída de dados, não apenas restringindo a arquivos físicos gravados no disco rígido, mas também dispositivos como o teclado e o monitor.

Quando criamos um arquivo, seja através de uma linguagem de programação ou através da interface de usuário, na verdade não estamos propriamente criando o arquivo, mas sim delegando esta tarefa ao Sistema Operacional (Linux, Windows, Mac), que se encarrega de fazer toda a verificação de permissões do usuário que está executando esta tarefa e atribuindo às descrições do arquivo informações como: usuário dono, data de criação, tipo, tamanho, data de acesso, modificação, dentre outras.

Todo sistema operacional trabalha em cima de um sistema de arquivos, que por sua vez é um dos principais responsáveis na criação e manipulação dos arquivos em dispositivos físicos.

Cada partição pode receber um sistema de arquivos, dentre os mais conhecidos estão: FAT 16, FAT 32, NTFS (usados pelo Windows), Ext2, Ext3, ReiserFS, XFS (usados pelo Linux e por outros Unix-like).

Os arquivos são divididos em duas subcategorias:
  • Binários - Arquivos interpretados apenas pelo SO. Contém apenas 0's e 1's. Programas compilados e bibliotecas são exemplos de arquivos binários;
  • Textos - São arquivos que contém informações, não apenas se restringindo a texto propriamente dito, mas também a arquivos de mídia por exemplo.

Alguns sistemas operacionais, como o Linux, tratam todo o sistema como uma grande gama de arquivos; processos, diretórios, usuários e dispositivos, todos são representados por arquivos e cabe ao SO decidir que tipo é cada arquivo, isto é feito através da leitura do cabeçalho dos mesmos, assim, ao verificar através desta leitura, se o arquivo em questão é uma imagem por exemplo, o SO permite que um programa de imagens "abra" este arquivo e não permita que um programa de reprodução de música seja ativado, pois a estrutura de um arquivo que seja uma imagem é totalmente diferente de um arquivo de áudio.

Observe que a verificação de que tipo é o arquivo se dá na leitura do cabeçalho do mesmo, e não na extensão que este possui. Desta forma podemos encontrar arquivos sem extensão no Linux, o que não impede sua manipulação. No Windows o SO reconhece o tipo de arquivo a partir da extensão (.txt, .jpg, .exe, ...) do mesmo.

    Próxima página

Páginas do artigo
   1. O que são arquivos?
   2. Manipulação de arquivos - Como funciona?
   3. O que são as classes iostream e fstream.h
   4. Exemplo de gravação - (ofstream) - Gravando um registro
   5. Exemplo de gravação - (ifstream) - Lendo um registro
   6. Exemplo de gravação - (ofstream) - Gravando vários registros
   7. Exemplo de gravação - (ifstream) - Lendo vários registros
   8. Exemplo de gravação e leitura - (fstream)
Outros artigos deste autor

VNC + Hamachi

Visopsys - Sistema Operacional aberto e portátil para manipulação de discos rígidos

As novidades no MenuetOS 2007

Ubuntu Completo e Total

Childsplay - Suite completa de jogos para a educação infantil

Leitura recomendada

Manipulando arquivos em C (parte 2)

Manipulação de imagens no formato PPM

Manipulando arquivos em C (parte 1)

LivreNFE - O emissor Nfe open source para Linux

Linguagem C - Listas Duplamente Encadeadas

  
Comentários
[1] Comentário enviado por marcrock em 13/11/2008 - 15:21h

Muito bom cara !!!!
Você foi bem objetivo, mesmo eu sem grandes conhecimentos de C++ entendi tudo !

Até mais .

[2] Comentário enviado por vsenna em 17/11/2008 - 02:25h

Muito bom seu texto, está escrito de forma bem clara!

[]'s

[3] Comentário enviado por andrezc em 11/04/2010 - 19:35h

Há alguns erros. Por exemplo, no primeiro código faltou uma biblioteca, a cstring, para usar a função strcpy(). E você usou bibliotecas da linguagem C, como stdio.h. O correto seria:

#include <cstdio>

mesma coisa com

#include <fstream.h>

o correto seria:

#include <fstream>


André
[]'s

[4] Comentário enviado por cibele_fni@ em 16/06/2011 - 12:36h

como faço um programa em c++ que verifique quais as letras do alfabeto estao faltando em um texto por favome ajude envie para:cibele_fni@hotmail.com

[5] Comentário enviado por DarthVictor em 26/06/2011 - 13:56h

Muito bom. Apesar de sempre ter usado #include <cstdlib.h>, fprinf, fscanf, etc; em C++. Gosto mais das funções em C e muitos programas tem de ser escritos orientado a objetos.

[6] Comentário enviado por LucianoAlexandre em 15/03/2012 - 07:41h

Legal, muito bom o artigo!!!

[7] Comentário enviado por CiroboyBR em 15/05/2015 - 05:42h

Bem fácil de entender. vlw pelo tuto.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts