1. Linguagens de Programação
Sistemas de Ficheiros
Realizado por: Rui Figueiredo Página 1 de 7
Sistema de Ficheiros
Conceito de Stream
Um stream é uma representação abstracta de um dispositivo
serial. Um dispositivo como uma impressora, um local da memória ou
qualquer objecto que suporte a leitura e a escrita nele de modo
linear, ou seja, é considerado um conjunto de três canais de entrada
e saída onde os dados podem ser passados para o programa, ou
provenientes do programa:
• Standard input;
• Standard output;
• Standard error.
Ficheiro é um conjunto de stream
Para procedermos à manipulação de ficheiros é necessário a
importação do namespace1
System.IO;
1
Entidade lógica que visa a organização das classes dentro de uma ou mais
aplicações.
using System.IO;
.......
2. Linguagens de Programação
Sistemas de Ficheiros
Realizado por: Rui Figueiredo Página 2 de 7
Classes que utilizadas na manipulação de ficheiros
Classes Descrição
BinaryReader Permite ler dados binários
BinaryWriter Permite escrever dados Binários
FileStream Permite criar uma stream para trabalhar com ficheiros
MemoryStream
Permite criar uma stream e trabalhar directamente na
memória
StreamReader Permite escrever dados textuais (ASCII)
StreamWriter Permite ler dados textuais (ASCII)
Directory
Trabalhar directamente com directórios (métodos
estáticos)
File Trabalhar directamente com ficheiros (métodos estáticos)
DirectoryInfo Obtêm informações detalhadas do directório
FileInfo Obtêm informações detalhadas do ficheiro
Métodos úteis da classe File
Método Descrição
Create ( ) Criar um arquivo em um determinado caminho
Open ( ) FileStrem no caminho especificado
Copy( ) Copiar arquivo em um local específico
OpenOrCreate () Se o ficheiro existir abre-o, senão cria-o.
Truncate Abre um ficheiro existente e apaga o seu conteúdo
Append
Permite abrir um ficheiro para escrita (apenas),
posicionando-se no fim do mesmo, ou seja, preserva o
conteúdo anterior. Se o ficheiro especificado não existir
cria um novo.
Métodos úteis da classe Directory
Método Descrição
Delete ( ) Exclui o directório e todos os arquivos nele contido
CreateDirectory ( ) Mover um directório para um novo local.
File.Delete("c:xpto.txt"); // Apagar ficheiro
File.Copy("c:xpto.txt","c:xpto new"); // Copier ficheiro
Directory.CreateDirectory("c:vidal");
3. Linguagens de Programação
Sistemas de Ficheiros
Realizado por: Rui Figueiredo Página 3 de 7
Propriedades do DirectoryInfo e FileInfo
Propriedades Descrição
Attributes Retorna os atributos associados ao ficheiro
CreationTime Retorna a data de criação do ficheiro
Exists Verifica se o ficheiro existe
LastAccessTime Último acesso ao ficheiro
FullName Retorna o caminho do ficheiro
LastWriteTime Última vez que foi guardado
GetFiles
Retorna um vector de FileInfo com todos os ficheiros
existentes
GetDirectories
Retorna um vector de DitectoryInfo com todos os
ficheiros existentes
Name O Nome do Ficheiro
Extension Retorna a extensão do ficheiro
Exemplo
Como saber se determinado ficheiros existe?
if (File.Exists("Nome do ficheiro.txt"))
Console.WriteLine("Este ficheiro existe");
esle
Console.WriteLine("Este ficheiro não existe");
4. Linguagens de Programação
Sistemas de Ficheiros
Realizado por: Rui Figueiredo Página 4 de 7
Leitura e escrita em ficheiros
FileStream
Ao criar uma FileStream abre-se um canal para o ficheiro
indicado. Esse canal pode ser aberto de modo a permitir operações
de leitura e/ou escrita.
A partir deste momento o ficheiro encontra-se aberto em modo
de escrita e leitura,atente-se no final da sintaxe ReadWrite.
StreamReder
Esta classe foi criada com o intuito de permitir ler texto de
ficheiros, permitindo usar vários tipos de codificação para os
caracteres lidos (Ex: UTF-7, UTF-8, ASCII, UNICODE).
Leitura de Ficheiros usando a StreamReader
Podem ler-se os ficheiros de texto, utilizando uma
StreamReader, através de vários métodos, de entre os quais se
destacam:
using System.IO;
.......
string Ficheiro = "C:Dados.txt";
FileStream fs = new FileStream(Ficheiro, FileMode.Open,FileAccess. ReadWrite);
using System.IO;
.......
// Definir o caminho, associando-o a uma variável
string Ficheiro = "C:Dados.txt";
// Abrir um ficheiro em modo de leitura e escrita
FileStream fs = new FileStream(Ficheiro, FileMode.Open,FileAccess.ReadWrite);
5. Linguagens de Programação
Sistemas de Ficheiros
Realizado por: Rui Figueiredo Página 5 de 7
o Read – lê o próximo caracter (ou conjunto de caracteres)
da stream.
o ReadLine – Lê uma linha inteira de cada vez e devolve uma
string com o resultado.
o ReadToEnd – devolve uma string com o resultado da
leitura desde a posição em que se encontra até ao fim da stream.
Indicação de Fim de Ficheiro
Uma das formas de saber que se chegou ao fim do ficheiro
quando se está a ler, é através da propriedade peek da classe
StreamReader, que devolve o valor (-1) quando foi atingido o fim do
ficheiro.
Fechar o Ficheiro
Depois do ficheiro ser lido ou escrito, as Streams usadas
(FileStream, StreamWriter ou StreamReader) devem ser fechadas,
para que os dados sejam escritos efectivamente no ficheiro (visto que
ficam armazenados temporariamente em buffers).Desta forma deve
invocar-se o método Flush ou Close, sendo que o segundo além de
“forçar” a escrita no ficheiro também fecha a respectiva stream, não
podendo por isso continuar a ser utilizada a partir desse momento.
while (sr1.Peek() >= 0)
{
MessageBox.Show(sr1.ReadLine());
}
6. Linguagens de Programação
Sistemas de Ficheiros
Realizado por: Rui Figueiredo Página 6 de 7
StreamWriter
Esta classe foi criada com o intuito de permitir escrever texto
para ficheiros, permitindo usar vários tipos de codificação para os
caracteres a escrever (Ex: UTF-7, UTF-8, ASCII, UNICODE).
Em anexo uma programa para melhor perceber a
funcionalidade, bem como o modo de funcionamento do Stream.
using System.IO;
.......
// Definir o caminho, associando-o a uma variável
string Ficheiro = "C:Dados.txt";
// Abrir um ficheiro em modo de leitura e escrita
FileStream fs = new FileStream(Ficheiro, FileMode.Open,FileAccess.ReadWrite);
// Stream de escrita
StreamWrite sw = new StreamWrite(fs);
// Escrever no ficheiro
sw.Write(DateTime.Now);
sw.WriteLine("Aqui vai uma linha, escrita à custa do StreamWriter");
// Tal como tinha dito, é necessário fechar as Strems
sw.Close();
fs.Close();
7. Linguagens de Programação
Sistemas de Ficheiros
Realizado por: Rui Figueiredo Página 7 de 7
StreamWriter
Para a realização deste trabalho, para alem dos documentos
fornecidos pelo Formador João Ferreira, consultei ainda os seguintes
sites:
www.byteshift.com/Downloads/112.aspx
www.dotnetraptors.com.br/start/artigos/artigos_net_corner/1898.aspx
www.cc.isel.ipl.pt/Formacao/DotNet/Slides&Demos/Sessão1.ppt
www.ime.usp.br/~kon/MAC5759/aulas/slides/CSustenido.ppt