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 melewati lokasi statis folder penyimpanan. Sekarang, kita akan mengubah kode tersebut untuk menggunakan nilai alih-alih Directory.GetCurrentDirectory
meneruskan nama folder statis.
Di editor, sisipkan kode berikut di atas baris pertama file
Program.cs
. Kode ini menggunakan metodeDirectory.GetCurrentDirectory
guna mendapatkan jalur untuk direktori saat ini dan menyimpannya dalam variabelcurrentDirectory
baru:var currentDirectory = Directory.GetCurrentDirectory();
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 variabelstoresDirectory
baru:var storesDirectory = Path.Combine(currentDirectory, "stores");
Ganti string
stores
dalamFindFiles
panggilan fungsi dengan variabelstoresDirectory
baru :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 run
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.
Dalam perulangan
foreach
yang berulang melaluifoundFiles
, masukkan baris kode berikut di atasif
pernyataan untuk menentukan variabelextension
baru . Kode ini menggunakan metodePath.GetExtension
untuk mendapatkan ekstensi dari setiap file.var extension = Path.GetExtension(file);
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); } }
Tekan Ctrl+S / Cmd+S untuk menyimpan file.
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;
}