Exercício – criar arquivos e diretórios
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
No arquivo
Program.cs
, remova o loopforeach
que faz iterações e grava cada nome de arquivo retornado pela funçãoFindFiles
na saída do Console. Essa alteração faz com que a variávelsalesFiles
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.No arquivo
Program.cs
, crie uma variável chamadasalesTotalDir
, 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);
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
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);
Pressione Ctrl+S / Cmd+S para salvar o arquivo.
Execute o programa executando o seguinte código no prompt do terminal:
dotnet run
Pressione o ícone Atualizar no Explorador de Arquivos.
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;
}