2009-04-27 13 views
6

Bu mevcut bir dosyanın üzerine nasıl sorar bu diğer SO question ilişkin olduğunu.File.Open neden var olan bir dosyanın üzerine yazmak için File.Create'den çok daha iyi?

üst cevabı şudur:

FileStream file = File.Open("text.txt", FileMode.Create); 

Benim cevabım bu oldu:

FileStream fs = System.IO.File.Create(fileName); 

Bu soruyu yazdığında itibariyle taksitli Open lehine 14-0 oldu. oy kötü çözümlerin karşı iyi bir göstergesi ise

, bu beni biraz düşündürüyor:

Ben o yapacak bu yöntemleri eksik bir şey var mı açıkça çok daha iyi seçmek için Create üzerinde Open?

cevap

6

Bana göre, File.Open("...", FileMode.Create)'un tam olarak ne yaptığını biliyorum çünkü FileMode.Create'un üzerine gelebiliyorum ve her seferinde yeni bir dosya oluşturacağını söylüyor. File.Create("..."), bunun bunu yapacağını belirten böyle bir araç ipucuna sahip değildir. Orada

+1

Bu aslında beni biraz güldürdü. Bir araç ipucu üzerinde kodlama kararı. Komik, ama sanırım, daha fazla bilgi sağladığından kalkınma için çok önemli olduğu için her zamanki gibi bir uyarıcı kadar iyi. Rastgele görünüyor, ama aslında mantıklı. Teşekkürler :) –

0

Ben de Create ile cevap ama Open gerçekten bir dosyayı açmak isteyen belirten ve FileMode.Create ile bunu zaten mevcut değilse dosyayı oluşturmak istediğinizi belirten gibi daha iyi bir çözümdür var olmak. Bence bu oldukça açık.

+1

sanırım. Ama daha özlü olmuyor mu? Ayrıca, Open, ben biraz daha kafa karıştırıcı yapan "FileMode.Create" bayrağına sahiptir: "Açmak istiyorum ama yarat." "Yaratmak istiyorum, daha önce orada ne olduğu umrumda değil." Open'ın gerçekten daha iyi olacağı (bu semantiklerden başka) bir durum var mı? Yani Create'in açtığı başka bazı yan etkileri var mı? –

0

Birincisi, bunu içine çok fazla okuma olabileceğini düşünüyorum. Örneğin, ilk doğru cevabı oyalama eğilimindeyim ve daha fazla cevabı ihmal ediyorum ... bu yüzden oraya gitmek biraz yardımcı oluyor.

İkincisi, File.Open aynı olmasına rağmen, System.IO.File.Open daha iyi okur.

Üçüncüsü, Oluştur okunabilirliği açısından, Açık olarak anlam ilgili değildir. VEYA bir dosya açmak istiyorsanız, ilk daha açıktır.

+0

Belki de çok fazla okuyordum. Cevabını yazmayı bitirdiğim zaman, muhtemelen birisinin beni ilk tepkiye "döverek" edeceğini biliyordum. Beni merak eden şey, diğer “daha ​​sert” ya da “ilginç” soruların o soru kadar oylamaya yetmeyeceğidir. Bu kolay bir soruydu, bu yüzden genellikle google veya msdn'da cevap vermek için 2 saniye süren bir şey için yüksek oy vermeyi görmedim. "Açık" ın açık ifadesi "Oluştur" dan biraz daha iyi bir anlam ifade ediyor. –

+2

@Brian: Sadece ilk cevabı oylamak çünkü ilk cevabı toplamda saçmalıktır. İyi cevaplar ilk cevaplara değil, oylanmalıdır. –

+0

@divo: Daha fazla katılıyorum.Tembellik denir. Sadece dürüst olmak. Ben her zaman olur sanırım, ama :) –

2

sadece bu sefer, bir cevap aramaya başladı bildiğim bir yer: Reflector

Ve argümanlar tam bir set ile hem çağrı new FileStream(... çıkıyor!

+0

Peki, tam olarak söylüyorum. İkisi de aynı kodu arıyorlar. Sanırım, 'Aç' ı 'Yaratma' üzerinden beğenen bir insan meselesidir, çünkü açık ve hazır olan bir dosyayı geri aldığınızı biraz daha açık hale getirir. –

İlgili konular