arquivos. 2 namespace system.io toda as classes relacionadas com dispositivos de entrada e saída...
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