A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Arquivos associado a um dispositivo de armazenamento pode ser tratado como stream –sequência de bytes –sequência de registros (estruturas) acesso –sequencial.

Apresentações semelhantes


Apresentação em tema: "Arquivos associado a um dispositivo de armazenamento pode ser tratado como stream –sequência de bytes –sequência de registros (estruturas) acesso –sequencial."— Transcrição da apresentação:

1 Arquivos associado a um dispositivo de armazenamento pode ser tratado como stream –sequência de bytes –sequência de registros (estruturas) acesso –sequencial –aleatório N-1 eof Nome1 fone1 nome2 fone2 nome3 fone3 nome4 fone

2 Arquivos Estratégias: -Funções em C -fopen – abre ou cria um arquivo -fread – realiza a leitura de um arquivo -fwrite – realiza a escrita em um arquivo -fclose – fecha um arquivo OU: -Objetos em C++ -Contrutor: cria ou abre o arquivo -Stream: escreve ou lê dados -Destrutor fecha o arquivo

3 Arquivos Infra-estrutura necessária: Sistema Operacional: manutenção do sistema de arquivos (file systems) gerenciamento de acessos interfaces com dispositivos físicos Dispositivos físicos discos magnéticos – trilhas/setores/clusters C:\teste.doc Unidade física, restrições de acesso, tamanho, início, encadeamento, organização(cluster) Acesso a uma trilha e setor

4 Arquivos Discos Magnéticos: Trilhas concêntricas Cilindros: junção das trilhas de mesma localização relativa nas diversas superfícies Setores: unidades de armazenamento (512 bytes) Cluster: agrupamento de setores (S.O.) Densidade armazenamento : Gbits/pol2 300 – 500 mil BPI (bits per inch) em cada trilha TPI (tracks per inch) -> 0,635 nm full stroke : 15 a 20 ms (67hz) Trilhas adjacentes: 1 e 2 ms Base: alumínio/magnésio vidro (ibm) Tempo Acesso: busca+latência rotacional+comandos Latência média:5.400 rpm -> 5,56 ms rpm -> 4,17 ms rpm -> 3,00 ms Busca média: 8,5 -> 6,5 ms

5 Arquivos chkdsk a: O número de série do volume é F815-97A bytes de espaço total em disco bytes em dois arquivos do usuário bytes disponíveis no disco 512 bytes em cada unidade de alocação total de unidades de alocação no disco 570 unidades de aloc. disponíveis no disco Tamanho: 1.4 Mbytes Cluster: 512 bytes

6 Arquivos chkdsk c: volume WINME criado em 30/9/2000 as 18hs O número de série do volume é FB kilobytes de espaço total em disco kilobytes disponíveis bytes em cada unidade de alocação total de unidades de alocação no disco unidades de aloc. disponíveis no disco Tamanho: 10 Gbytes Cluster: 8 Kbytes

7 Arquivos chkdsk d: bytes de espaço total em disco bytes em 742 arquivos ocultos bytes em pastas bytes em arquivos de usuário bytes disponíveis no disco bytes em cada unidade de alocação total de unidades de alocação no disco unidades de aloc. disponíveis no disco Tamanho: 4 Gbytes Cluster: 4Mbytes

8 Arquivos Fragmentação externa: - ferramentas de desfragmentação do sistema operacional Fragmentação interna - tratamento com administração de partições de disco Cluster 0 Cluster 1 Cluster 2 Cluster 3 Cluster 4

9 Arquivos Fragmentação externa: - ferramentas de desfragmentação do sistema operacional Fragmentação interna - tratamento com administração de partições de disco Cluster 0 Cluster 1 Cluster 2 Cluster 3 Cluster 4

10 Arquivos Estratégias: Funções em C Exemplo: leitura de caracteres de arquivo para monitor #include void main(){ FILE *fp; //ponteiro para arquivo char c; fp =fopen(nome.txt, r); If (fp==NULL) exit(0); while ( (c= fgetc(fp)) != EOF){ cout.put(c); } fclose(fp); }

11 Arquivos Estratégias: Objetos em C++ Exemplo: arquivo de clientes #include using namespace std; #include int main() { int aux_cod; char aux_nome[30]; char aux_fone[30]; ofstream arquivoCliente( "cliente.dat", ios::out ); if ( !arquivoCliente ) { // testa abertura do arquivo cerr << "Arquivo não pode ser aberto!" << endl; exit( 1 ); } cout<<"Digite o código, nome e fone dos clientes: "<> aux_cod >> aux_nome >> aux_fone ) { arquivoCliente << aux_cod << ' ' << aux_nome << ' ' << aux_fone << '\n'; cout << "Mais um ? "; } return 0; }

12 Arquivos Estratégias: Objetos em C++ Exemplo: arquivo de clientes #include using namespace std; #include int main() { int aux_cod; char aux_nome[30]; char aux_fone[30]; ofstream arquivoCliente( "cliente.dat", ios::out ); if ( !arquivoCliente ) { // testa abertura do arquivo cerr << "Arquivo não pode ser aberto!" << endl; exit( 1 ); } cout<<"Digite o código, nome e fone dos clientes: "<> aux_cod >> aux_nome >> aux_fone ) { arquivoCliente << aux_cod << ' ' << aux_nome << ' ' << aux_fone << '\n'; cout << "Mais um ? "; } return 0; } Declaração do objeto e parâmetros para construtor Sobrecarga de operadores: testa Se abertura do arquivo está ok! Operadores de inserção em stream para a escrita no arquivo! 1 nome1 fone1 2 nome2 fone2 3 nome3 fone3

13 Arquivos Estratégias: Objetos em C++ Exemplo: arquivo de clientes #include using namespace std; #include int main() { int aux_cod; char aux_nome[30]; char aux_fone[30]; ifstream arquivoCliente( "cliente.dat", ios::in ); if ( !arquivoCliente ) { // testa abertura do arquivo cerr << "Arquivo não pode ser aberto!" << endl; exit( 1 ); } cout<> aux_cod >> aux_nome >> aux_fone ) { cout << aux_cod << ' << aux_nome << ' << aux_fone << endl; } return 0; }

14 Arquivos Funções membro auxiliares seekg, seekp – permitem o posicionamento de ponteiros para leitura e gravação. Pode-se indicar um número de bytes a partira da posição corrente, do início do arquivo ou do final do arquivo (ios::curr, ios::beg, ios::end) ex.: arquivoCliente.seekg(n); arquivoCliente.seekg(n, ios::curr); tellg, tellp - permitem recuperar a posição corrente dos ponteiros de leitura e gravação ex.:arquivoCliente.seekg(0, ios::end); posicao= arquivoCliente.tellg(); //posição equivale ao tamanho do arquivo


Carregar ppt "Arquivos associado a um dispositivo de armazenamento pode ser tratado como stream –sequência de bytes –sequência de registros (estruturas) acesso –sequencial."

Apresentações semelhantes


Anúncios Google