Mengerjakan sistem file

Selesai

.NET berisi tipe bawaan untuk bekerja dengan sistem file yang dapat Anda temukan di kumpulan nama System.IO.

Di sini, Anda mempelajari tentang jenis yang tersedia dengan System.IO menggunakan C# untuk membaca sistem file untuk menemukan file dan direktori.

Skenario

Peritel besar sering menulis data ke file sehingga dapat diproses nanti dalam batch.

Tailwind Traders meminta setiap tokonya menulis total penjualannya ke sebuah file dan mengirimkan file itu ke lokasi pusat. Untuk menggunakan file-file tersebut, perusahaan perlu membuat proses batch yang dapat bekerja dengan sistem file.

Menyertakan kumpulan nama System.IO

Kumpulan nama System.IO berisi tipe bawaan yang memungkinkan Anda berinteraksi dengan file dan direktori. Misalnya, Anda dapat mengambil kumpulan file dan direktori berdasarkan kriteria pencarian dan getset properti untuk file dan direktori. Anda juga dapat menggunakan jenis kumpulan nama System.IO untuk membaca dan menulis aliran data dan file secara sinkron dan asinkron.

Untuk saat ini, kita akan fokus pada apa yang perlu Anda ketahui untuk bekerja dengan direktori dengan menggunakan kelas Directory yang terdapat dalam kumpulan nama System.IO. Kelas Direktori memaparkan metode statis untuk membuat, memindahkan, dan menghitung melalui direktori dan subdirektori.

Mencantumkan semua direktori

Kelas Directory sering digunakan untuk mencantumkan direktori (atau menghitung). Misalnya, struktur file Tailwind Traders memiliki folder akar yang disebut penyimpanan. Dalam folder tersebut adalah subfolder yang diatur menurut nomor penyimpanan, dan di dalam folder tersebut adalah file total penjualan dan inventarisasi. Strukturnya terlihat seperti contoh ini:

📂 stores
    📄 sales.json
    📄 totals.txt
    📂 201
       📄 sales.json
       📄 salestotals.json
       📄 inventory.txt
    📂 202

Untuk membaca dan mencantumkan nama direktori tingkat atas, gunakan fungsi Directory.EnumerateDirectories.

IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");

foreach (var dir in listOfDirectories) {
    Console.WriteLine(dir);
}

// Outputs:
// stores/201
// stores/202

Mencantumkan file dalam direktori tertentu

Untuk mencantumkan nama semua file dalam direktori, Anda dapat menggunakan fungsi Directory.EnumerateFiles.

IEnumerable<string> files = Directory.EnumerateFiles("stores");

foreach (var file in files)
{
    Console.WriteLine(file);
}

// Outputs:
// stores/totals.txt
// stores/sales.json

Mencantumkan semua konten dalam direktori dan semua subdirektori

Baik fungsi Directory.EnumerateDirectories dan Directory.EnumerateFiles memiliki kelebihan yang menerima parameter untuk menentukan bahwa file dan direktori pola pencarian harus cocok.

Fungsi juga memiliki kelebihan lain yang menerima parameter untuk menunjukkan apakah akan melintasi folder tertentu dan semua subfoldernya secara rekursif.

// Find all *.txt files in the stores folder and its subfolders
IEnumerable<string> allFilesInAllFolders = Directory.EnumerateFiles("stores", "*.txt", SearchOption.AllDirectories);

foreach (var file in allFilesInAllFolders)
{
    Console.WriteLine(file);
}

// Outputs:
// stores/totals.txt
// stores/201/inventory.txt

Pada latihan berikutnya, Anda menggunakan Directory kelas untuk membaca secara dinamis melalui direktori penyimpanan utama Tailwind Traders untuk menemukan semua file sales.json.