LINQ dan direktori file (C#)

Banyak operasi sistem file pada dasarnya adalah kueri dan oleh karena itu sangat cocok untuk pendekatan LINQ.

Kueri di bagian ini tidak merusak. Mereka tidak digunakan untuk mengubah konten file atau folder asli. Ini mengikuti aturan bahwa kueri tidak boleh menyebabkan efek samping. Secara umum, kode apa pun (termasuk kueri yang melakukan operator buat/perbarui/hapus) yang memodifikasi data sumber harus dipisahkan dari kode yang hanya mengkueri data.

Bagian ini berisi topik berikut:

Cara mengkueri file dengan atribut atau nama tertentu (C#)
Memperlihatkan cara mencari file dengan memeriksa satu atau beberapa properti objeknya FileInfo .

Cara mengelompokkan file menurut ekstensi (LINQ) (C#)
Memperlihatkan cara mengembalikan grup FileInfo objek berdasarkan ekstensi nama file mereka.

Cara mengkueri jumlah total byte dalam sekumpulan folder (LINQ) (C#)
Memperlihatkan cara mengembalikan jumlah total byte di semua file dalam pohon direktori tertentu.

Cara membandingkan konten dua folder (LINQ) (C#)s
Memperlihatkan cara mengembalikan semua file yang ada dalam dua folder tertentu, dan juga semua file yang ada dalam satu folder tetapi tidak yang lain.

Cara mengkueri file atau file terbesar di pohon direktori (LINQ) (C#)
Memperlihatkan cara mengembalikan file terbesar atau terkecil, atau jumlah file tertentu, di pohon direktori.

Cara mengkueri file duplikat di pohon direktori (LINQ) (C#)
Memperlihatkan cara mengelompokkan semua nama file yang terjadi di lebih dari satu lokasi di pohon direktori tertentu. Juga menunjukkan cara melakukan perbandingan yang lebih kompleks berdasarkan perbandingan kustom.

Cara mengkueri konten file dalam folder (LINQ) (C#)
Memperlihatkan cara melakukan iterasi melalui folder di pohon, membuka setiap file, dan mengkueri konten file.

Komentar

Ada beberapa kompleksitas yang terlibat dalam pembuatan sumber data yang secara akurat mewakili konten sistem file dan menangani pengecualian dengan anggun. Contoh di bagian ini membuat kumpulan FileInfo rekam jepret objek yang mewakili semua file di bawah folder akar tertentu dan semua subfoldernya. Status aktual masing-masing FileInfo dapat berubah dalam waktu antara saat Anda memulai dan mengakhiri eksekusi kueri. Misalnya, Anda dapat membuat daftar FileInfo objek untuk digunakan sebagai sumber data. Jika Anda mencoba mengakses Length properti dalam kueri, FileInfo objek akan mencoba mengakses sistem file untuk memperbarui nilai Length. Jika file tidak ada lagi, Anda akan mendapatkan FileNotFoundException dalam kueri Anda, meskipun Anda tidak mengkueri sistem file secara langsung. Beberapa kueri di bagian ini menggunakan metode terpisah yang menggunakan pengecualian khusus ini dalam kasus tertentu. Opsi lain adalah menjaga sumber data Anda tetap diperbarui secara dinamis dengan menggunakan FileSystemWatcher.

Lihat juga