Saat mendapatkan nama file di folder tertentu:
DirectoryInfo di = new DirectoryInfo(currentDirName);
FileInfo[] smFiles = di.GetFiles("*.txt");
foreach (FileInfo fi in smFiles)
{
builder.Append(fi.Name);
builder.Append(", ");
...
}
fi.Name
memberi saya nama file dengan ekstensi: file1.txt
, file2.txt
, file3.txt
.
Bagaimana saya bisa mendapatkan nama file tanpa ekstensi? ( file1
, file2
, file3
)
builder
akan menjadi turunan dariStringBuilder
dalam kode OP. Ini hanya contoh penggunaan GetFileNameWithoutExtension - Anda mungkin akan lebih baik menulis kode Anda sendiri yang menyebutnya.GetFileNameWithoutExtension
hanya menghapus ekstensi akhir . Misalnya, nama fileexample.es6.js
akan menjadiexample.es6
Gunakan
Path.GetFileNameWithoutExtension()
.sumber
Solusi ini juga mencegah penambahan koma tertinggal.
Saya tidak suka DirectoryInfo, FileInfo untuk skenario ini.
DirectoryInfo dan FileInfo mengumpulkan lebih banyak data tentang folder dan file daripada yang diperlukan sehingga mereka membutuhkan lebih banyak waktu dan memori daripada yang diperlukan.
sumber
Directory.GetFiles
setiap hariDirectoryInfo.GetFiles
, jika semua yang saya inginkan adalah nama file.Gunakan
Path.GetFileNameWithoutExtension
. Path ada di namespace System.IO.sumber
Ini mengembalikan nama file hanya tanpa tipe ekstensi. Anda juga dapat mengubahnya sehingga Anda mendapatkan nama dan tipe file
sumber: https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx
sumber
Sebagai jawaban tambahan (atau untuk menambah jawaban yang ada) Anda bisa menulis metode ekstensi untuk mencapai ini untuk Anda dalam kelas DirectoryInfo. Berikut adalah contoh yang saya tulis dengan cukup cepat yang dapat diperindah untuk memberikan nama direktori atau kriteria lain untuk modifikasi, dll:
Sunting: Saya juga berpikir metode ini mungkin bisa disederhanakan atau dikejutkan jika menggunakan LINQ untuk mencapai konstruksi array, tapi saya tidak punya pengalaman dalam LINQ untuk melakukannya dengan cukup cepat untuk sampel semacam ini.
Sunting 2 (hampir 4 tahun kemudian): Ini adalah metode LINQ-ified yang akan saya gunakan:
sumber
FileInfo
tahu ekstensinya sendiri, jadi Anda bisa menghapusnyaatau jika Anda paranoid bahwa itu mungkin muncul di tengah, atau ingin mengoptimalkan mikro:
sumber
jika nama file berisi direktori dan Anda tidak perlu kehilangan direktori:
sumber
coba ini,
sumber
Sebagai catatan:
Dengan cara ini Anda tidak menggunakan
StringBuilder
tetapiString.Join()
. Tolong juga komentar yangPath.GetFileNameWithoutExtension()
membutuhkan path lengkap (fi.FullName
), tidakfi.Name
seperti yang saya lihat di salah satu jawaban lain.sumber
sumber