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: 137.953 ]

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

Polimorfismo - Uma visão em C++ e Java

Linux, 100% compatível!

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

QTParted - Particionador gráfico, simples e fácil

Análise do Seamonkey - A evolução da espécie

Leitura recomendada

DoTheWorld - Biblioteca completa para manipulação de Arquivos e Pastas em C

Manipulando arquivos em C (parte 1)

Manipulação de imagens no formato PPM

Manipulando arquivos em C (parte 2)

Embutindo um banco de dados SQLite em sua aplicação C++

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts