Şu anda bir dosyayı kullanıcı tanımlı bir dosyaya kaydetmeyi içeren bir kodla çalışıyorum. Kullanıcı uzantısı olmayan bir dosya adıyla geçerse, kod dosya türüne göre dahili olarak dahili olarak algılanır (dahili olarak depolanır). Can Spaces Bir Dosya Uzantısı İçinde Var mı?
Ancak, kodun içine geçirilen dosya adının bir uzantıya sahip olup olmadığını belirleyen zor bir zaman yaşıyorum. Ben Path.HasExtension(filename)
ve Path.GetExtension(filename)
kullanıyorum ama garip davranış sergiliyor gibi görünüyor:
.EXT
uzantısıdır. Bu iyi. Bir uzantıdır.
This Is A File.EXT
=>.EXT
uzantısıdır. Bu da iyi.
This Is A File. Not An Extension
=>. Not An Extension
uzantısıdır. Bununla birlikte, bunu uzantısız bir dosya olarak düşünürdüm. Windows bu adı taşıyan bir dosya oluşturduğumda da düşünür (tanınmayan bir uzantıya sahip bir dosya oluşturmak, Windows'un buna EXTENSIONNAME File
adını vermesine neden olur; buna karşın, uzantıya sahip olmayan dosyalar yalnızca File
olarak adlandırılır). Bu, uzantıdır.
This Is A File.Not An Extension
=>.Not An Extension
uzantısıdır. Yukarıdaki gibi aynı sorun. Ayrıca, aynı davranışın Path.GetFileNameWithoutExtension(filename)
'da da göründüğüne dikkat edin (ör. Son iki örnekte dosya adı olmadan uzantıyı yalnızca This Is A File
olarak bildirir).
Yani bundan aldığım şey, .NET ve Windows'un uzantı olarak ne düşündüklerine göre farklılık göstermeleridir.
Soru: bana bu gibi kod uygulamak için sorun olup olmayacağını merak ediyorum:
if(!Path.HasExtension(filename) || Path.GetExtension(filename).Contains(" ")) {...}
o daha düzgün bir uzantısı benim kodun tanımını çekeceği beri Windows'un işleri nasıl ele aldığı doğrultusunda. Yoksa burada kaybolduğum bir şey var mı?
Aradığınız ve bulduğum this slightly similar question, ancak burada bağlı belgeler yalnızca uzantının bir boşluk/dönemle sonlandırılmasının önerilmediğini belirtir - uzantıdaki boşluklar hakkında hiçbir şey söylemezler.
Bir dosya oluşturdum 'Bu bir dosyadır. Windows 7 ve Windows XP'yi kullanan bir Uzantı değil. Dosyayı oluşturmak için masaüstünde, Yeni Metin Belgesini sağ tıklıyorum. Ya da .Net'i kullanarak dosyayı oluşturmaktan mı bahsediyorsunuz? –
@Thomas Bu dosyaları .NET veya Windows 7 ile oluşturabilirim. Benim amacım, Windows'un dosya uzantı olarak ". – NickAldwin