2013-10-12 17 views
5

Bir proje için proje üzerinde çalışıyorum. Yapmam gereken, ayrıştırılmış talimatları bir dosyaya vermek. Microsoft, bir dosyaya yazmak için açıklar bu örneği vardır:Herhangi bir bilgisayarda proje klasörüne dosya yazmak

// Compose a string that consists of three lines. 
string lines = "First line.\r\nSecond line.\r\nThird line."; 

// Write the string to a file. 
System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt"); 
file.WriteLine(lines); 

file.Close(); 

O rol iyiyim, ancak mevcut projenin çevre/konuma dosyayı yazmak için bir yol var? Belirli bir yolu kodlamak yerine bunu yapmak isterim (yani, "C:\\test.txt").

cevap

16

Evet, yalnızca göreli bir yol kullanın. @".\test.txt" kullanırsanız (btw @ sadece bir dize değişmez yapıyorum, çıkış karakterine olan ihtiyacı ortadan kaldırır, böylece ".\\test.txt" da yazabilir ve aynı yere yazabilir) dosyayı mevcut işe yazar Çoğu durumda, programınızı içeren klasördür.

+0

Sweet'i kullanarak alabilirsiniz. Kısa ve noktaya. Çok teşekkürler! – blutuu

8

Ana aksamınızın (.exe) yolunu almak için Assembly.GetExecutingAssembly().Location kullanabilirsiniz. Bu yol korumalı bir klasörün içinde ise (örneğin, Program Files), kullanıcı bir yönetici olmadığı sürece orada yazamayacağınızı unutmayın - buna güvenmeyin.

string path = System.Reflection.Assembly.GetExecutingAssembly().Location; 
string fileName = Path.Combine(path, "test.txt"); 

This question/answer

yazma erişebileceksiniz kullanıcının profil klasörü nasıl gösterir: Burada

örnek kodudur. Alternatif olarak, dosyaları kaydetmek için kullanıcının My Documents klasörünü kullanabilirsiniz - yine, buna erişiminiz olduğundan emin olabilirsiniz. Bu yolu

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)