arquivos. 2 namespace system.io toda as classes relacionadas com dispositivos de entrada e saída...

Post on 17-Apr-2015

109 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Arquivos

2

Namespace System.IO

• Toda as classes relacionadas com dispositivos de entrada e saída encontram-se em System.IO

• Incluir no início do programa:

using System.IO;

3

Classe File e FileInfo

• Classe File apresenta apenas métodos estáticos

• Classe FileInfo representa um arquivo em particular

4

Classes Directory e DirectoryInfo

• Classe Directory apresenta apenas métodos estáticos

• Classe DirectoryInfo representa um arquivo em particular

5

Streams (Fluxos)

• Representa um fluxo de informações

• A origem e o destino são escondidos do programador (ele só precisa escrever e ler do stream – o stream estará associado a um arquivo)

6

Diferenças entre arquivos texto e binários

• Arquivos textos contêm dados textuais que são geralmente criados através da adição de cadeia de caracteres (strings). Todas as linhas de um arquivo texto terminam com um caractere de newline (nova linha). No Windows, a representação do newline é o caracter '\n' representado como uma combinação de retorno de carro (carriage return) e pula linha (line feed)

• Arquivos binários contém a representação binária dos dados. Suponha que queiramos gravar o valor de uma variável inteira que possua o número 50 armazenado nela. Como cada inteiro ocupa 4 bytes, teríamos a gravação do número 32 00 00 00 (50 = 0x32)

7

Hierarquia de Classes

System.Object

System.IO.Directory

MarshallByRefObject

System.FileSystemInfo

System.IO.FileInfo

System.IO.DirectoryInfo

System.IO.File

System.IO.Path

8

Hierarquia de Classes

• System.Object– System.MarshallByReference

• System.IO.Stream– System.IO.BufferedStream– System.IO.MemoryStream– System.IO.FileStream

• System.IO.TextReader– System.IO.StreamReader– System.IO.StringReader

• System.IO.TextWriter– System.IO.StreamWriter– System.IO.StringWriter

– System.IO.BinaryWriter– System.IO.BinaryReader

9

Arquivos Texto

Classes:

• StreamReader usada para leitura de arquivo texto

• StreamWriter usada para escrita de arquivo texto

10

Arquivos Binários

Classes

• BinaryReader leitura de arquivo binário

• BinaryWriter gravação de arquivo binário

11

Arquivo

• Nome: nome do arquivo

• Modo: criação, abertura, abertura ou criação

• Tipo de Acesso: leitura, escrita, leitura / escrita

12

Enumerações FileMode e FileAccess

FileMode

FileMode.Append

FileMode.Create

FileMode.CreateNew

FileMode.Open

FileMode.OpenOrCreate

FileMode.Truncate

FileAccess

FileAccess.Read

FileAccess.Write

FileAccess.ReadWrite

13

Conjuntos de caracteres

• ASCII

• Unicode

• UTF7 formato Unicode de 7 bits

• UTF-8 é um formato Unicode de 8 bits que é compatível com o conjunto de caracteres ASCII

14

Classe FileStream

• FileStream(string nome, FileMode modo, FileAccess acesso)

onde:

nome: nome do arquivo

modo: append, create, createNew, open, OpenOrCreate, Truncate

acesso: read, write, ReadWrite

15

Enum FileMode

Especifica como o Sistema Operacional deve abrir um arquivo.

• FileMode.Append• FileMode.Create• FileMode.CreateNew• FileMode.Open• FileMode.OpenOrCreate• FileMode.Truncate

16

Enum FileMode

• Append abre o arquivo, se ele existir e vai até seu final ou cria um novo arquivo

• Create SO deve cria um novo arquivo. Se o arquivo já existir ele será sobreescrito

• CreateNew SO deve criar novo arquivo• Open SO deve abrir um arquivo existente. Uma

exceção será lançada se o arquivo não existir• OpenOrCreate SO deve abrir o arquivo se ele existir.

Caso contrário, um novo arquivo será criado• Truncate SO deve abrir um arquivo existente. Uma

vez aberto, ele será truncado de forma a ter 0 bytes

17

Enum FileAccess

Define constantes para leitura, escrita e leitura/escrita

• FileAccess.Read

• FileAccess.Write

• FileAccess.ReadWrite

18

Exemplos

• Criação de um arquivo de log; dados são anexados ao final do arquivo; se o arquivo não existir ele será criado

Exemplo:

FileStream log = new FileStream("log.txt",FileMode.Append,FileAccess.Write);

19

Leitura e Escrita de Arquivos Texto

• StreamReader leitura de um arquivo texto

• StreamWriter escrita de um arquivo texto

20

Gravação de um arquivo texto

• abertura do arquivo para escrita

• escrita das informações

• fechamento do arquivo

21

Exemplo de Escrita FileStream arq = new FileStream("tabuada.txt", FileMode.Create); StreamWriter writer = new StreamWriter(arq);

writer.WriteLine("Tabuada"); writer.WriteLine(); for (int i = 1; i < 10; i++) { for (int j = 1; j <= 10; j++) { writer.WriteLine("{0,2} x {1,2} = {2,2}", i, j, i * j); } writer.WriteLine(); }

writer.Close();

arq.Close();

22

Leitura de um arquivo texto

• abertura do arquivo para leitura

• leitura das informações

• fechamento do arquivo

23

Exemplo de Leitura FileStream arq = new FileStream("tabuada.txt", FileMode.Open); StreamReader reader = new StreamReader(arq);

string linha;

do { linha = reader.ReadLine(); if (linha != null) { Console.WriteLine(linha); } } while (linha != null);

reader.Close();

arq.Close();

24

Arquivos Binários

• Leitura de um arquivo binário

• Escrita de um arquivo binário

25

Classe StringBuffer

• Representa uma cadeia de caracteres que poderá ser modificada

Exemplo:StringBuilder sb = new StringBuilder();sb.Append("a"); // asb.Append("b"); // abint i = 5;sb.AppendFormat("{0,4:X2}",i);

26

Exemplo – File.Exists()using System;using System.IO;

class Test{ public static void Main() { string origem = @"c:\tests\Test.txt"; string destino = @"c:\tests\Test2.txt"; if (File.Exists(origem)) {

File.Copy(origem, destino);

} else { Console.WriteLine("Arquivo orugem não existe.");

} }}

27

File – alguns métodos• AppendAllText()• AppendText• Copy• Create• CreateText• Delete• Exists• GetCreationTime• Move• Open• OpenRead• OpenText• OpenWrite

28

Directory – Alguns métodos

• CreateDirectory• Delete• Exists• GetCreationTime• GetCurrentDirectory• GetFiles• GetLastAccesTime• GetLastWriteTime• GetParent• Move• SetCreationTime• SetLastWriteTime

29

BACKUP

30

Comandos de Formatação do Código

• Para formatar o código– Edit / Advanced / Format Document– Tecla de Atalho: Ctrl+E,D

• Para "colapsar" (aglutinar) o código– Edit / Outiling / Collapse to Definitions– Tecla de Atalho: Ctrl+M,O

31

Outiling

Edit / Outlining

32

Classes File e Directory

33

Path

• A classe Path permite manipular de forma simples as strings que representam os arquivos e diretórios

34

System.IO.Stream

35

System.IO.BufferedStream

36

System.IO.MemoryStream

37

System.IO.FileStream

38

System.IO.StreamReader

39

System.IO.StringReader

40

System.IO.StreamWriter

41

System.IO.StringWriter

42

System.IO.BinaryReader

43

System.IO.BinaryWriter

44

Arquivos Sequenciais

• Novas informações são adicionadas ao final do arquivo

• os registros podem ter tamanhos diferentes• para atingir um determinado ponto do arquivo é

necessário ler todo arquivo até aquele ponto• atualizações de informações no meio do arquivo

são difíceis• são usados geralmente para guardar

informações que são raramente editatas ou atualizadas (emails, arquivos de logs de erros, documentos, cartas)

45

Arquivos Aleatórios

• Baseados no conceito de registros de tamanhos fixos

• todos os registros deverão ter o mesmo tamanho

• usados quando há necessidade frequente de alterações de informações

• registros podem ser acessados de forma rápida

top related