Exercício – criar arquivos e diretórios

Concluído

As classes File e Directory no .NET permitem criar arquivos e diretórios programaticamente.

Até agora você criou um aplicativo de linha de comando robusto no .NET que pode ler qualquer estrutura de pastas para localizar arquivos com extensão .json. Agora, você precisará ler esses arquivos para resumir os dados e, depois, gravar os totais em um novo arquivo em um novo diretório chamado salesTotals.

Neste exercício, você criará o diretório salesTotalDir e o arquivo totals.txt, em que os totais de vendas serão agrupados.

Criar o diretório SalesTotals

  1. No arquivo Program.cs, remova o loop foreach que faz iterações e grava cada nome de arquivo retornado pela função FindFiles na saída do Console. Essa alteração faz com que a variável salesFiles não seja usada. No entanto, vamos deixar essa opção aqui por enquanto, pois iremos usá-la novamente em uma próxima lição.

  2. No arquivo Program.cs, crie uma variável chamada salesTotalDir, que contém o caminho para o diretório salesTotalDir:

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    
    var salesFiles = FindFiles(storesDirectory);
    
  3. No arquivo Program.cs, adicione o código para criar o diretório:

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    Directory.CreateDirectory(salesTotalDir);   // Add this line of code
    
    var salesFiles = FindFiles(storesDirectory);   
    

Gravar o arquivo totals.txt

  1. No arquivo Program.cs, adicione o código para criar um arquivo vazio chamado totals.txt dentro do diretório salesTotalDir recém-criado. Use uma cadeia de caracteres vazia como o conteúdo do arquivo por enquanto:

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    Directory.CreateDirectory(salesTotalDir);
    
    var salesFiles = FindFiles(storesDirectory);
    
    File.WriteAllText(Path.Combine(salesTotalDir, "totals.txt"), String.Empty);
    
  2. Pressione Ctrl+S / Cmd+S para salvar o arquivo.

  3. Execute o programa executando o seguinte código no prompt do terminal:

    dotnet run
    
  4. Pressione o ícone Atualizar no Explorador de Arquivos.

    Captura de tela do ícone Atualizar no Explorador de Arquivos do editor do Cloud Shell.

Você está quase terminando. A última etapa é ler os arquivos de vendas, somar os totais e gravar o total geral no novo arquivo totals.txt. Em seguida, você aprenderá a ler e analisar dados dentro de arquivos.

Ficou preso?

Se você ficou preso durante este exercício, veja o código completo até este ponto:

var currentDirectory = Directory.GetCurrentDirectory();
var storesDirectory = Path.Combine(currentDirectory, "stores");

var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
Directory.CreateDirectory(salesTotalDir);     
var salesFiles = FindFiles(storesDirectory);

File.WriteAllText(Path.Combine(salesTotalDir, "totals.txt"), String.Empty);

IEnumerable<string> FindFiles(string folderName)
{
    List<string> salesFiles = new List<string>();

    var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);

    foreach (var file in foundFiles)
    {
        var extension = Path.GetExtension(file);
        if (extension == ".json")
        {
            salesFiles.Add(file);
        }
    }

    return salesFiles;
}