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.
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:
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.
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.
Você foi bem objetivo, mesmo eu sem grandes conhecimentos de C++ entendi tudo !
Até mais .