Alıştırma - Dosya ve dizin oluşturma

Tamamlandı

.NET'teki File ve Directory sınıfları program aracılığıyla yeni dosya ve dizinler oluşturmanızı sağlar.

Önceki bölümlerde .NET ile her türlü klasör yapısını okuyup .json uzantısına sahip dosyaları bulabilen sağlam bir komut satırı uygulaması oluşturdunuz. Şimdi, içindeki verileri özetlemek için bu dosyaları okumanız ve ardından toplamları salesTotals adlı yeni bir dizinde yeni bir dosyaya yazmanız gerekir.

Bu alıştırmada salesTotalDir dizinini ve satış toplamlarının harmanlandığı totals.txt dosyasını oluşturacaksınız.

SalesTotals dizinini oluşturma

  1. Program.cs dosyasında, işlevinden foreach döndürülen her dosya adını yineleyen ve KonsolFindFilesyazan döngüsünü kaldırın. Bu değişiklik değişkenin salesFiles kullanılmayana neden olur. Ancak, bunu şimdilik burada bırakacağız çünkü gelecekteki bir derste tekrar kullanacağız.

  2. Program.cs dosyasında salesTotalDirsalesTotalDiryolunu tutan adlı bir değişken oluşturun:

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    
    var salesFiles = FindFiles(storesDirectory);
    
  3. Program.cs dosyasında, dizini oluşturmak için kod ekleyin:

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

totals.txt dosyasını yazma

  1. Program.cs dosyasına, yeni oluşturulan salesTotalDir dizininde totals.txt adlı boş bir dosya oluşturmak için kodu ekleyin. Dosyanın içeriği için şimdilik boş bir dize kullanın:

    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. Dosyayı kaydetmek için Ctrl+S / Cmd+S tuşlarına basın.

  3. Terminal isteminden aşağıdaki kodu çalıştırarak programı çalıştırın:

    dotnet run
    
  4. Dosyalar gezgininde Yenile simgesini seçin.

    Cloud Shell düzenleyicisinin Dosyalar gezginindeki Yenile simgesinin ekran görüntüsü.

Programı tamamlamak üzeresiniz. Son adım, satış dosyalarını okumak, toplamları eklemek ve genel toplamı yeni totals.txt dosyasına yazmaktır. Sonraki ünitede dosyaların içindeki verileri okumayı ve ayrıştırmayı öğreneceksiniz.

Takıldınız mı?

Bu alıştırma sırasında takıldıysanız şu noktaya kadar olan kodun tamamı aşağıdadır:

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