Juliolimahen / working-with-files-csharp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

working-with-files-csharp

File, FileInfo

Quando usar File ou FileInfo

  • Programa simples usar File, pois só será realizada poucas ações e não tera o problema de perda de desenpenho
  • Programa mais completo, com varias operações

IOException

  • Classe resposável por todas as exceções possíveis que podem ocorrer quando se trabalha com um arquivos
    Namespace System.IO
  • Nomes auto explicativos
    • IOException
    • DirectoryNotFoundException
    • DriveNotFoundException
    • EndOfStreamException
    • FileLoadException
    • FileNotFoundException
    • PathTooLongException
    • PipeException

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);
            }
        }
    }
}

FileStream, StreamReader

FileStream

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

  • Suporte a dados binários.

Instanciação

  • Vários construtores
  • File / File Info

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
  • File / FileInfo

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);
            }
        }
    }
}

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

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
    • 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);
            }
        }
    }
}

Directory, DirectoryInfo

Directory, DirectoryInfo

Demo

  • listar as pastas a partir de uma pasta informada
  • listar os arquivos a partir de uma pasta informada
  • 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);
            }
        }
    }
}

Path

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());
        }
    }
}

About


Languages

Language:C# 100.0%