Ler e escrever em ficheiros
Ler dados de ficheiros e escrever dados em ficheiros são conceitos centrais no .NET.
A Tailwind Traders precisa gravar o total de todos os arquivos de vendas individuais da loja em um novo arquivo e, em seguida, carregar o arquivo no sistema de vendas da empresa.
Aqui, você aprende a usar a File
classe para ler e gravar em arquivos.
Leia dados de ficheiros
Os ficheiros são lidos através do método ReadAllText
na classe File
.
File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
O objeto de devolução de ReadAllText
é uma cadeia.
{
"total": 22385.32
}
Analisar dados em ficheiros
Estes dados no formato de cadeia não são muito úteis. Continuam a ser apenas carateres, mas agora num formato que consegue ler. O utilizador quer a capacidade de analisar estes dados num formato que possa utilizar em programação.
Existem várias formas de analisar os ficheiros JSON com o .NET, incluindo uma biblioteca de comunidade conhecida como Json.NET.
Você pode adicionar o pacote Json.NET ao seu projeto usando o NuGet:
dotnet add package Newtonsoft.Json
Em seguida, adicione using Newtonsoft.Json
ao topo do seu arquivo de classe:
using Newtonsoft.Json;
E use o JsonConvert.DeserializeObject
método:
var salesJson = File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
var salesData = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
Console.WriteLine(salesData.Total);
class SalesTotal
{
public double Total { get; set; }
}
Gorjeta
Os ficheiros existem em vários formatos. Os ficheiros JSON são os mais aconselháveis para trabalhar, devido ao suporte incorporado na linguagem. Também poderá encontrar ficheiros que sejam .csv, de largura fixa ou algum outro formato. Nesse caso, é melhor procurar um analisador para esse tipo de ficheiro em nuget.org.
Escreva dados em ficheiros
Você aprendeu a escrever arquivos no exercício anterior; é só que você escreveu um vazio. Para escrever dados num ficheiro, utilize o mesmo método WriteAllText
, mas introduza os dados que pretende escrever.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());
// totals.txt
// 22385.32
Acrescente dados a ficheiros
No exemplo anterior, o ficheiro é substituído sempre que escreve no mesmo. Às vezes, você não quer isso. Você deseja acrescentar dados ao arquivo em vez de substituí-lo completamente. Pode acrescentar dados com o método File.AppendAllText
. Por padrão, File.AppendAllText
cria o arquivo se ele ainda não existir.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");
// totals.txt
// 22385.32
// 22385.32
Gorjeta
No exemplo de código anterior, Environment.NewLine
solicita que o .NET coloque o valor em sua própria linha. Se não tivesse introduzido este valor, obteria todos os números concentrados na mesma linha.
No próximo exercício, irá concluir o projeto de totais de vendas para a Tailwind Traders ao ler todos os ficheiros de vendas e escrever o total geral num ficheiro txt. O sistema de comércio da empresa pode então processar o ficheiro.