Latihan - Bekerja dengan jalur
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 memasukkan lokasi statis dari folder toko. Sekarang, kita akan mengubah kode tersebut untuk menggunakan nilai Directory.GetCurrentDirectory alih-alih meneruskan nama folder statis.
Di editor, sisipkan kode berikut di atas baris pertama file
Program.cs. Kode ini menggunakan metodeDirectory.GetCurrentDirectoryguna mendapatkan jalur untuk direktori saat ini dan menyimpannya dalam variabelcurrentDirectorybaru:var currentDirectory = Directory.GetCurrentDirectory();Sisipkan kode berikut setelah baris yang baru saja Anda tambahkan. Kode ini menggunakan metode
Path.Combineuntuk membuat jalur lengkap ke direktori penyimpanan dan menyimpannya dalam variabelstoresDirectorybaru:var storesDirectory = Path.Combine(currentDirectory, "stores");Ganti string
storesdalamFindFilespanggilan fungsi dengan variabelstoresDirectorybaru :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); }Tekan Ctrl+S (atau Cmd+S macOS) untuk menyimpan file.
Jalankan program java dari baris perintah:
dotnet runProgram 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.jsonPerhatikan bahwa nama file yang dikembalikan menyertakan jalur sistem lengkap. Jalur ini disertakan karena metode
Directory.GetCurrentDirectorymengembalikan 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.
Dalam perulangan
foreachyang berulang melaluifoundFiles, masukkan baris kode berikut di atasifpernyataan untuk menentukan variabelextensionbaru . Kode ini menggunakan metodePath.GetExtensionuntuk mendapatkan ekstensi dari setiap file.var extension = Path.GetExtension(file);Ubah pernyataan
ifagar terlihat seperti baris kode berikut. Pernyataan ini memeriksa apakah ekstensi file sama dengan .json.if (extension == ".json")Perulangan
foreachakan terlihat mirip dengan kode berikut:foreach (var file in foundFiles) { var extension = Path.GetExtension(file); if (extension == ".json") { salesFiles.Add(file); } }Tekan Ctrl+S / Cmd+S untuk menyimpan file.
Jalankan program java dari baris perintah:
dotnet runKeluaran sekarang menampilkan semua file .json di setiap direktori ID toko.
/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.
Terjebak?
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;
}