GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menentukan apakah sistem file peka terhadap huruf besar-kecil di .net?

Perlu diingat bahwa Anda mungkin memiliki beberapa sistem file dengan aturan casing yang berbeda. Misalnya, sistem file root mungkin peka terhadap huruf besar-kecil, tetapi Anda dapat memiliki sistem file yang tidak peka terhadap huruf besar-kecil (misalnya stik USB dengan sistem file FAT di atasnya) yang terpasang di suatu tempat. Jadi jika Anda melakukan pemeriksaan seperti itu, pastikan Anda membuatnya di direktori yang akan Anda akses.

Juga, bagaimana jika pengguna menyalin data dari katakanlah case-sensitive ke sistem file case-insensitive? Jika Anda memiliki file yang berbeda hanya berdasarkan kasus, salah satunya akan menimpa yang lain, menyebabkan hilangnya data. Saat menyalin ke arah lain, Anda mungkin juga mengalami masalah, misalnya, jika file A berisi referensi ke file "b", tetapi file tersebut sebenarnya bernama "B". Ini berfungsi pada sistem file case-sensitive asli, tetapi tidak pada sistem case-sensitive.

Jadi saya menyarankan agar Anda menghindari tergantung pada apakah sistem file peka huruf besar-kecil atau tidak jika Anda bisa. Jangan membuat nama file yang berbeda hanya berdasarkan huruf besar kecil, gunakan dialog pemilih file standar, bersiaplah bahwa huruf besar kecil dapat berubah, dll.


Ini bukan fungsi .NET, tetapi fungsi GetVolumeInformation dan GetVolumeInformationByHandleW dari Windows API akan melakukan apa yang Anda inginkan (lihat parameter yje lpFileSystemFlags.


Tidak ada fungsi seperti itu di .NET Class Library.

Namun, Anda dapat meluncurkannya sendiri:Coba buat file dengan nama huruf kecil, lalu coba buka dengan versi huruf besar dari namanya. Mungkin Anda dapat meningkatkan metode ini, tetapi Anda mendapatkan idenya.

EDIT :Anda sebenarnya bisa mengambil file pertama di direktori root dan kemudian memeriksa apakah filename.ToLower() dan filename.ToUpper() ada. Sayangnya sangat mungkin varian huruf besar dan huruf kecil dari file yang sama ada, jadi Anda harus membandingkan properti FileInfo.Name dari varian huruf kecil dan huruf besar untuk melihat apakah memang sama atau tidak. Ini tidak memerlukan penulisan ke disk.

Jelas, ini akan gagal jika tidak ada file sama sekali di volume. Dalam hal ini, kembali saja ke opsi pertama (lihat jawaban Martin untuk penerapannya).


Anda dapat membuat file di folder temp (menggunakan nama file huruf kecil), lalu memeriksa apakah file tersebut ada (menggunakan nama file huruf besar), misalnya:

string file = Path.GetTempPath() + Guid.NewGuid().ToString().ToLower();
File.CreateText(file).Close();
bool isCaseInsensitive = File.Exists(file.ToUpper());
File.Delete(file);

Linux
  1. Cara menemukan sistem file CD/DVD untuk membuatnya terpasang secara otomatis :[Linux]

  2. Bagaimana Cara Meningkatkan Jumlah Inode Dalam Sistem File Ext4?

  3. Fitur Sistem File "Btrfs"

  1. Cara Menggunakan Perintah Tar di Linux

  2. Bagaimana Cara Menentukan Proses Yang Membuat File??

  3. Bagaimana cara menambahkan output ke file?

  1. Bagaimana cara menambahkan baris baru ke akhir file?

  2. Linux – Bagaimana Cara Menampilkan Jenis Filesystem Melalui Terminal??

  3. Bagaimana cara mengarahkan output dari system() ke file?