2016-04-01 19 views
-5

Ben oldukça uzun bir süre sonra bunu nasıl yapacağımı anlamaya çalışıyorum, biraz araştırma yaptıktan sonra, bana yardımcı olacak bir şey bulamadım. İhtiyacım olan budur: Yerel bir değişkenle birlikte String.Format ({0}, {1}, vb.) Kullanabilmem gerekir. System.IO.File.WriteAllLines() yılındaYerel değişkenler ile String.Format kullanın C#

string[] lines = { "Never gonna give you up", "Never gonna let you down"}; 
System.IO.File.WriteAllLines(@"C:\Users\{0}\Desktop\testttt.txt", lines); 

Bir konuda {0} yerine gerekiyor.

Ben bunu yaparken başarısız olmuştur ve hatayı

geri verilmesinde (kullanıcılar Environment.UserName kullanarak yolunu dosya)

'System.Text.Encoding'

+2

'WriteAllLines (String.Format (@: Environment.UserName, "C \ Users \ {0} \ Desktop \ testttt.txt"), hatlar) ile yourVariable değiştirin'? –

+1

Yanlış yapıyorsunuz. Kendiniz oluşturmaya çalışmak yerine, kullanıcı dizinini almak için System.Enviroment kullanmalısınız. Windows'un gelecekteki sürümleri klasörü taşırsa kodunuz kırılır. (Bunun gerçekleşmeyeceğini söylemeden önce, Win2K'den Windows 7'ye geçiyordu.) –

+1

Tamam, bir şey * denediniz. Bir şey bir hata verdi. Ama ne denediğini bilmiyoruz, o zaman size şu hatayı vermek için ne tür bir hata yapabileceğinizi bulmak için rasgele tahminler yapmamızı bekliyor musunuz? – hvd

cevap

1

için 'string' dan dönüştürülemez Öncelikle, bu masaüstü dizinine giden yolu almanın yolu değil. Bunun yerine, sadece bunu: çözümünüz aksine

Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

, bu klasör yeniden yönlendirme, uzaktan profilleri, hem de gelecekle birlikte çalışacaktır, Windows sürümlerini (ve geçmişte!). Environment.Username mutlaka yine doğru klasör adı :)

İkincisi,

var subdir = "SomeDir"; 
File.WriteAllLines(string.Format(@"C:\SomeParent\{0}\MyFile.txt", subdir), lines); 

Aslında çağrı string.Format yöntem gerek olmadığını cabası. File.WriteAllLines 'a başka bir argüman eklerseniz, o zaman nasıl çalışır? Ayrıca tüm değişkenlerinizi değişken miktarda argümanlarla biçimlendirilebilir bir dizgi kabul etmek için mi yazıyorsunuz?

Biraz şifreli hata iletisi, yalnızca argümanlarınıza uyan bir yöntem aşırı yükü olmadığını söylemeye çalışıyor - en yakın şekilde gösterilen hatayla sonuçlanabilir.

-1
String[] lines = { "Never gonna give you up", "Never gonna let you down"}; 
System.IO.File.WriteAllLines(string.format(@"C:\Users\{0}\Desktop\testttt.txt", yourVariable) , lines); 

Kendi