0% found this document useful (0 votes)
58 views14 pages

Curso C# Completo: Capítulo: Trabalhando Com Arquivos

The document discusses classes in the System.IO namespace for working with files and directories in C#, including File, FileInfo, Directory, DirectoryInfo, FileStream, StreamReader, StreamWriter, and IOException. It provides code examples for reading and writing files, copying files, and enumerating files in a directory. The using block syntax is demonstrated for ensuring IDisposable objects are properly closed and disposed.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views14 pages

Curso C# Completo: Capítulo: Trabalhando Com Arquivos

The document discusses classes in the System.IO namespace for working with files and directories in C#, including File, FileInfo, Directory, DirectoryInfo, FileStream, StreamReader, StreamWriter, and IOException. It provides code examples for reading and writing files, copying files, and enumerating files in a directory. The using block syntax is demonstrated for ensuring IDisposable objects are properly closed and disposed.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

18/08/2018

Curso C# Completo
Capítulo: Trabalhando com arquivos
http://educandoweb.com.br
Prof. Dr. Nelio Alves

File, FileInfo, IOException


http://educandoweb.com.br
Prof. Dr. Nelio Alves

1
18/08/2018

File, FileInfo
• Namespace System.IO

• Realiza operações com arquivos (create, copy, delete, move, open, etc.) e
ajuda na criação de objetos FileStream.

• File
• static members (simples, mas realiza verificação de segurança para cada operação)
• https://msdn.microsoft.com/en-us/library/system.io.file(v=vs.110).aspx

• FileInfo
• instance members
• https://msdn.microsoft.com/en-us/library/system.io.fileinfo(v=vs.110).aspx

IOException
Namespace System.IO

• IOException
• DirectoryNotFoundException
• DriveNotFoundException
• EndOfStreamException
• FileLoadException
• FileNotFoundException
• PathTooLongException
• PipeException

2
18/08/2018

Demo File
using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {

string sourcePath = @"c:\temp\file1.txt";


string targetPath = @"c:\temp\file2.txt";

try {
File.Copy(sourcePath, targetPath);
string[] lines = File.ReadAllLines(sourcePath);
foreach (string line in lines) {
Console.WriteLine(line);
}
}
catch (IOException e) {
Console.WriteLine("An error occurred");
Console.WriteLine(e.Message);
}
}
}
}

Demo FileInfo
using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {

string sourcePath = @"c:\temp\file1.txt";


string targetPath = @"c:\temp\file2.txt";

try {
FileInfo fileInfo = new FileInfo(sourcePath);
fileInfo.CopyTo(targetPath);
string[] lines = File.ReadAllLines(sourcePath);
foreach (string line in lines) {
Console.WriteLine(line);
}
}
catch (IOException e) {
Console.WriteLine("An error occurred");
Console.WriteLine(e.Message);
}
}
}
}

3
18/08/2018

FileStream, StreamReader
http://educandoweb.com.br
Prof. Dr. Nelio Alves

FileStream
https://msdn.microsoft.com/en-us/library/system.io.filestream(v=vs.90).aspx

Disponibiliza uma stream associada a um arquivo, permitindo operações de leitura


e escrita.

Suporte a dados binários.

Instanciação: read bytes


• Vários construtores FileStream
• File / FileInfo write bytes

4
18/08/2018

StreamReader
https://msdn.microsoft.com/en-us/library/system.io.streamreader(v=vs.90).aspx

É uma stream capaz de ler caracteres a partir de uma stream binária (ex:
FileStream).

Suporte a dados no formato de texto.

Instanciação:
• Vários construtores read chars StreamReader FileStream
• File / FileInfo

Demo 1
using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {

string path = @"c:\temp\file1.txt";


FileStream fs = null;
StreamReader sr = null;
try {
fs = new FileStream(path, FileMode.Open); // File.OpenRead(path);
sr = new StreamReader(fs);
string line = sr.ReadLine();
Console.WriteLine(line);
}
catch (IOException e) {
Console.WriteLine("An error occurred");
Console.WriteLine(e.Message);
}
finally {
if (sr != null) sr.Close();
if (fs != null) fs.Close();
}
}
}
}

5
18/08/2018

Demo 2
using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {

string path = @"c:\temp\file1.txt";

StreamReader sr = null;
try {
sr = File.OpenText(path);
while (!sr.EndOfStream) {
string line = sr.ReadLine();
Console.WriteLine(line);
}
}
catch (IOException e) {
Console.WriteLine("An error occurred");
Console.WriteLine(e.Message);
}
finally {
if (sr != null) sr.Close();
}
}
}
}

using block
http://educandoweb.com.br
Prof. Dr. Nelio Alves

6
18/08/2018

using block
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement

Sintaxe simplificada que garante que os objetos IDisposable serão fechados.

Objetos IDisposable NÃO são gerenciados pelo CLR. Eles precisam ser
manualmente fechados.
Exemplos: Font, FileStream, StreamReader, StreamWriter

Demo 1
using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {

string path = @"c:\temp\file1.txt";

try {
using (FileStream fs = new FileStream(path, FileMode.Open)) {
using (StreamReader sr = new StreamReader(fs)) {
string line = sr.ReadLine();
Console.WriteLine(line);
}
}
}
catch (IOException e) {
Console.WriteLine("An error occurred");
Console.WriteLine(e.Message);
}
}
}
}

7
18/08/2018

Demo 2
using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {

string path = @"c:\temp\file1.txt";

try {
using (StreamReader sr = File.OpenText(path)) {
while (!sr.EndOfStream) {
string line = sr.ReadLine();
Console.WriteLine(line);
}
}
}
catch (IOException e) {
Console.WriteLine("An error occurred");
Console.WriteLine(e.Message);
}
}
}
}

StreamWriter
http://educandoweb.com.br
Prof. Dr. Nelio Alves

8
18/08/2018

StreamWriter
https://msdn.microsoft.com/en-us/library/system.io.streamwriter(v=vs.110).aspx

É uma stream capaz de escrever caracteres a partir de uma stream binária (ex:
FileStream).

Suporte a dados no formato de texto.

Instantiation:
• Several constructors
• File / FileInfo write chars StreamWriter FileStream
• CreateText(path)
• AppendText(String)

Demo
using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {

string sourcePath = @"c:\temp\file1.txt";


string targetPath = @"c:\temp\file2.txt";

try {
string[] lines = File.ReadAllLines(sourcePath);

using (StreamWriter sw = File.AppendText(targetPath)) {


foreach (string line in lines) {
sw.WriteLine(line.ToUpper());
}
}
}
catch (IOException e) {
Console.WriteLine("An error occurred");
Console.WriteLine(e.Message);
}
}
}
}

9
18/08/2018

Directory, DirectoryInfo
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Directory, DirectoryInfo
• Namespace System.IO

• Operações com pastas (create, enumerate, get files, etc.).

• Directory
• static members (simple, but performs security check for each operation)
• https://msdn.microsoft.com/en-us/library/system.io.directory(v=vs.110).aspx

• DirectoryInfo
• instance members
• https://msdn.microsoft.com/en-us/library/system.io.directoryinfo(v=vs.110).aspx

10
18/08/2018

Demo
• Vamos listar as pastas a partir de uma pasta informada

• Vamos listar os arquivos a partir de uma pasta informada

• Vamos criar uma pasta

using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {
string path = @"c:\temp\myfolder";

try {
var folders = Directory.EnumerateDirectories(path, "*.*", SearchOption.AllDirectories);
Console.WriteLine("FOLDERS:");
foreach (string s in folders) {
Console.WriteLine(s);
}

var files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories);


Console.WriteLine("FILES:");
foreach (string s in files) {
Console.WriteLine(s);
}

Directory.CreateDirectory(@"c:\temp\myfolder\newfolder");
}
catch (IOException e) {
Console.WriteLine("An error occurred");
Console.WriteLine(e.Message);
}
}
}
}

11
18/08/2018

Path
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Path
• Namespace System.IO

• Realiza operações com strings que contém informações de arquivos


ou pastas.

• https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx

12
18/08/2018

Demo

using System;
using System.IO;

namespace Course {
class Program {
static void Main(string[] args) {

string path = @"c:\temp\myfolder\file1.txt";

Console.WriteLine("DirectorySeparatorChar: " + Path.DirectorySeparatorChar);


Console.WriteLine("PathSeparator: " + Path.PathSeparator);
Console.WriteLine("GetDirectoryName: " + Path.GetDirectoryName(path));
Console.WriteLine("GetFileName: " + Path.GetFileName(path));
Console.WriteLine("GetExtension: " + Path.GetExtension(path));
Console.WriteLine("GetFileNameWithoutExtension: " + Path.GetFileNameWithoutExtension(path));
Console.WriteLine("GetFullPath: " + Path.GetFullPath(path));
Console.WriteLine("GetTempPath: " + Path.GetTempPath());
}
}
}

Exercício de fixação
http://educandoweb.com.br
Prof. Dr. Nelio Alves

13
18/08/2018

Fazer um programa para ler o caminho de um arquivo .csv


contendo os dados de itens vendidos. Cada item possui um
nome, preço unitário e quantidade, separados por vírgula. Você
deve gerar um novo arquivo chamado "summary.csv", localizado
em uma subpasta chamada "out" a partir da pasta original do
arquivo de origem, contendo apenas o nome e o valor total para
aquele item (preço unitário multiplicado pela quantidade),
conforme exemplo.

Example:

Source file: Output file (out/summary.csv):

TV LED,1290.99,1 TV LED,1290.99
Video Game Chair,350.50,3 Video Game Chair,1051.50
Iphone X,900.00,2 Iphone X,1800.00
Samsung Galaxy 9,850.00,2 Samsung Galaxy 9,1700.00

https://github.com/acenelio/files1-csharp

14

You might also like