Latihan - Bekerja dengan sistem file

Selesai

Anda dapat menggunakan .NET untuk menemukan dan mengembalikan informasi tentang file dan folder.

Tailwind Traders memiliki banyak toko fisik di seluruh dunia. Setiap malam, setiap toko membuat file bernama sales.json yang berisi total semua penjualan untuk hari itu. File-file ini diatur dalam folder bernama dengan ID penyimpanan.

Catatan

Modul ini menggunakan .NET CLI (Antarmuka Baris Perintah) dan Visual Studio Code untuk pengembangan lokal. Setelah menyelesaikan modul ini, Anda dapat menerapkan konsep yang telah Anda pelajari dengan menggunakan lingkungan pengembangan seperti Visual Studio (Windows) atau Visual Studio untuk Mac (macOS), atau melanjutkan pengembangan di Visual Studio Code (Windows, Linux, & macOS).

Modul ini menggunakan .NET 8.0 SDK. Pastikan Anda telah menginstal .NET 8.0 dengan menjalankan perintah berikut di terminal perintah pilihan Anda:

dotnet --list-sdks

Output yang mirip dengan contoh berikut muncul:

6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]

Pastikan bahwa versi yang dimulai dengan 8 terdaftar. Jika tidak ada yang tercantum atau perintah tidak ditemukan, instal .NET 8.0 SDK terbaru.

Mengkloning proyek pemula

Dalam latihan ini, Anda menulis program .NET yang mencari direktori dan subdirektorinya untuk file bernama sales.json.

Proyek starter telah dibuat untuk Anda. Anda mengkloningnya menggunakan terminal terintegrasi di Visual Studio Code.

  1. Buka Visual Studio Code.

  2. Di menu utama, pilih Tampilkan>Terminal untuk membuka jendela terminal.

  3. (Opsional) Di jendela terminal, ubah ke direktori tempat Anda ingin menyalin file, seperti c:\MyProjects.

  4. Di jendela terminal, jalankan perintah berikut untuk mengkloning proyek starter dan buka proyek kloning:

    git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-files
    
  5. Jalankan perintah berikut untuk membuat proyek .NET Console baru:

    dotnet new console -f net8.0 -n mslearn-dotnet-files -o .
    
  6. Jalankan perintah berikut untuk membuka proyek .NET baru dalam instans Visual Studio Code yang sama:

    code -a .
    

    Petunjuk / Saran

    Pada titik ini, Visual Studio Code mungkin meminta Anda bahwa aset yang diperlukan untuk membangun dan menjalankan proyek hilang.

    Cuplikan layar memperlihatkan perintah Visual Studio yang memungkinkan pengguna mengetahui ada sesuatu yang hilang dari proyek.

    Pilih segitiga dengan tanda seru lalu pilih Jalankan kembali terminal untuk menambahkan file yang memungkinkan Visual Studio Code menjalankan dan men-debug proyek.

  7. Di jendela Explorer, di bawah mslearn-dotnet-files, perluas folder penyimpanan dan setiap folder bernomor di dalamnya.

    Cuplikan layar jendela Explorer yang memperlihatkan struktur folder proyek.

Temukan file sales.json

Tugas berikut membuat program untuk menemukan semua file sales.json di semua folder mslearn-dotnet-files proyek.

Menyertakan kumpulan nama System.IO

  1. Di jendela Explorer, pilih Program.cs file untuk membukanya di editor.

    Cuplikan layar jendela Explorer yang menyoroti file program.cs.

  2. Tempelkan kode berikut ke baris pertama Program.csfile untuk mengimpor System.IO dan namespace layanan System.Collections.Generic:

    using System.IO;
    using System.Collections.Generic;
    

Catatan

Dimulai dengan .NET 6, dua pernyataan dalam kode sebelumnya secara otomatis disertakan dalam proyek baru dengan cara ImplcitUsings grup properti. Karena kami menentukan bendera -f net8.0 saat membuat proyek konsol baru, bendera tersebut ditambahkan secara implisit. Namun, jika Anda bekerja dengan proyek yang lebih lama, proyek tersebut perlu disertakan dalam file Program.cs, dan itu tidak memengaruhi proyek ini jika Anda membiarkannya dalam file.

Menulis fungsi untuk menemukan file sales.json

Buat fungsi baru yang disebut FindFiles yang mengambil parameter folderName.

  1. Ganti Console.WriteLine("Hello, World!"); baris dengan kode berikut:

    IEnumerable<string> FindFiles(string folderName)
    {
        List<string> salesFiles = new List<string>();
    
        var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
    
        foreach (var file in foundFiles)
        {
            // The file name will contain the full path, so only check the end of it
            if (file.EndsWith("sales.json"))
            {
                salesFiles.Add(file);
            }
        }
    
        return salesFiles;
    }
    
  2. Sisipkan kode berikut di bawah pernyataanusing untuk memanggil fungsi FindFiles. Kode ini meneruskan nama folder penyimpanan sebagai lokasi untuk mencari file.

    var salesFiles = FindFiles("stores");
    
    foreach (var file in salesFiles)
    {
        Console.WriteLine(file);
    }
    
  3. Tekan Ctrl+S (atau Cmd+S macOS) untuk menyimpan Program.cs file.

Jalankan program

  1. Masukkan perintah berikut di jendela terminal untuk menjalankan program:

    dotnet run
    
  2. Program akan menunjukkan output berikut:

    stores/sales.json
    stores/201/sales.json
    stores/202/sales.json
    stores/203/sales.json
    stores/204/sales.json
    

Bagus! Anda berhasil menulis program baris perintah yang melintasi semua folder di stores direktori dan mencantumkan semua file sales.json yang ditemukan.

Dalam contoh ini, jalur ke direktori stores cukup sederhana, dan terletak di direktori kerja program. Di unit berikutnya, Anda akan mempelajari cara membangun struktur kompleks yang berfungsi di seluruh sistem operasi dengan menggunakan kelas Path.

Macet?

Jika Anda mengalami masalah saat menjalankan program, berikut adalah kode lengkap untuk file Program.cs tersebut. Ganti konten Program.cs Anda dengan kode ini:

var salesFiles = FindFiles("stores");
    
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)
    {
        // The file name will contain the full path, so only check the end of it
        if (file.EndsWith("sales.json"))
        {
            salesFiles.Add(file);
        }
    }

    return salesFiles;
}