Övning – Skapa filer och kataloger
Med klasserna File
och Directory
i .NET kan du skapa nya filer och kataloger programmatiskt.
Hittills har du skapat ett robust kommandoradsprogram i .NET som kan läsa godtycklig mappstruktur för att hitta filer med filnamnstillägget .json. Nu måste du läsa filerna för att sammanfatta data i dem och sedan skriva summorna till en ny fil i en ny katalog med namnet salesTotals.
I den här övningen skapar du katalogen salesTotalDir och filen totals.txt där försäljningssummorna är sorterade.
Skapa katalogen SalesTotals
Program.cs
I filen tar du bort loopenforeach
som itererar och skriver varje filnamn som returneras frånFindFiles
funktionen till konsolutdata. Den här ändringen resulterar i att variabelnsalesFiles
inte används. Men vi lämnar den här för tillfället eftersom vi kommer att använda den igen i en framtida lektion.Program.cs
I filen skapar du en variabel med namnetsalesTotalDir
, som innehåller sökvägen till katalogen salesTotalDir:var currentDirectory = Directory.GetCurrentDirectory(); var storesDirectory = Path.Combine(currentDirectory, "stores"); var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir"); var salesFiles = FindFiles(storesDirectory);
Program.cs
I filen lägger du till kod för att skapa katalogen: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);
Skriva filen totals.txt
Program.cs
I filen lägger du till koden för att skapa en tom fil med namnet totals.txt i den nyligen skapade katalogen salesTotalDir. Använd en tom sträng för filens innehåll för tillfället: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);
Spara filen genom att trycka på Ctrl+S / Cmd+S.
Kör programmet genom att köra följande kod från terminalprompten:
dotnet run
Välj ikonen Uppdatera i filutforskaren.
Du är nästan klar. Det sista steget är att läsa försäljningsfilerna, addera summorna och skriva totalsumman till den nya filen totals.txt. Nästa steg är att lära dig hur du läser och parsar data i filer.
Har du fastnat?
Om du fastnade under den här övningen är det här den fullständiga koden fram till den här punkten:
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;
}