Latihan - Bekerja dengan jalur

Selesai

Kelas Path .NET dan Directory.GetCurrentDirectory adalah dua cara untuk menentukan dan menyusun jalur sistem file.

Dalam latihan sebelumnya, Anda menulis program yang melakukan iterasi melalui folder untuk menemukan salah satu file sales.json di dalamnya atau subfolder apa pun.

Dalam latihan ini, Anda menggunakan Path kelas dan Directory.GetCurrentDirectory untuk meningkatkan program sehingga menemukan file apa pun dengan ekstensi .json.

Menggunakan direktori saat ini dan menggabungkan jalur

Dalam kode Program.cs saat ini, Anda melewati lokasi statis folder penyimpanan. Sekarang, kita akan mengubah kode tersebut untuk menggunakan nilai alih-alih Directory.GetCurrentDirectory meneruskan nama folder statis.

  1. Di editor, sisipkan kode berikut di atas baris pertama file Program.cs. Kode ini menggunakan metode Directory.GetCurrentDirectory guna mendapatkan jalur untuk direktori saat ini dan menyimpannya dalam variabel currentDirectorybaru:

    var currentDirectory = Directory.GetCurrentDirectory();
    
  2. Sisipkan kode berikut setelah baris yang baru saja Anda tambahkan. Kode ini menggunakan metode Path.Combine untuk membuat jalur lengkap ke direktori penyimpanan dan menyimpannya dalam variabel storesDirectorybaru:

    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
  3. Ganti string stores dalam FindFiles panggilan fungsi dengan variabel storesDirectorybaru :

    var salesFiles = FindFiles(storesDirectory);
    

    Bagian atas file Anda akan terlihat seperti cuplikan berikut ini:

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    var salesFiles = FindFiles(storesDirectory);
    
    foreach (var file in salesFiles)
    {
        Console.WriteLine(file);
    }
    
  4. Tekan Ctrl+S (atau Cmd+S macOS) untuk menyimpan file.

  5. Jalankan program java dari baris perintah:

    dotnet run
    
  6. Program akan menunjukkan output berikut:

    /home/username/dotnet-files/stores/sales.json  
    /home/username/dotnet-files/stores/201/sales.json  
    /home/username/dotnet-files/stores/202/sales.json  
    /home/username/dotnet-files/stores/203/sales.json  
    /home/username/dotnet-files/stores/204/sales.json  
    

    Perhatikan bahwa nama file yang dikembalikan menyertakan jalur sistem lengkap. Jalur ini disertakan karena metode Directory.GetCurrentDirectory mengembalikan jalur lengkap ke lokasi saat ini.

Menemukan semua file .json

Alih-alih hanya mencari file sales.json, program perlu mencari file apa pun dengan ekstensi .json. Untuk melakukannya, Anda dapat menggunakan Path.GetExtension metode untuk memeriksa ekstensi untuk setiap file.

  1. Dalam perulangan foreach yang berulang melalui foundFiles, masukkan baris kode berikut di atas if pernyataan untuk menentukan variabel extensionbaru . Kode ini menggunakan metode Path.GetExtension untuk mendapatkan ekstensi dari setiap file.

        var extension = Path.GetExtension(file);
    
  2. Ubah pernyataan if agar terlihat seperti baris kode berikut. Pernyataan ini memeriksa apakah ekstensi file sama dengan .json.

           if (extension == ".json")
    

    Perulangan foreach akan terlihat mirip dengan kode berikut:

    foreach (var file in foundFiles)
    {
        var extension = Path.GetExtension(file);
        if (extension == ".json")
        {
            salesFiles.Add(file);
        }
    }
    
  3. Tekan Ctrl+S / Cmd+S untuk menyimpan file.

  4. Jalankan program java dari baris perintah:

    dotnet run
    

    Output sekarang menunjukkan semua file .json di setiap direktori ID penyimpanan:

    /home/username/dotnet-files/stores/sales.json  
    /home/username/dotnet-files/stores/201/sales.json
    /home/username/dotnet-files/stores/201/salestotals.json  
    /home/username/dotnet-files/stores/202/sales.json
    /home/username/dotnet-files/stores/202/salestotals.json    
    /home/username/dotnet-files/stores/203/sales.json  
    /home/username/dotnet-files/stores/203/salestotals.json  
    /home/username/dotnet-files/stores/204/sales.json  
    /home/username/dotnet-files/stores/204/salestotals.json  
    

Kerja bagus! Anda telah menggunakan kelas Path dan metode Directory.GetCurrentDirectory untuk membuat program jauh lebih kuat. Di unit berikutnya, Anda akan mempelajari cara membuat direktori dan memindahkan file antar lokasi.

Macet?

Jika Anda terjebak pada titik apa pun dalam latihan ini, berikut adalah kode yang telah selesai. Hapus semua yang ada di Program.cs dan ganti dengan solusi ini:

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

var salesFiles = FindFiles(storesDirectory);
    
foreach (var file in salesFiles)
{
    Console.WriteLine(file);
}

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