Mengerjakan sistem file
.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 get
set
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.