2013-10-12 8 views
5

私はクラスのプロジェクトで作業しています。私がしなければならないことは、解析された命令をファイルにエクスポートすることです。マイクロソフトは、ファイルに書き込む方法を説明し、この例があります:任意のコンピュータ上のプロジェクトフォルダにファイルを書き込む

// 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(); 

私はその一部と罰金だけど、現在のプロジェクトの環境/場所にファイルを書き込むための方法は何ですか?特定のパス(つまり"C:\\test.txt")をハードコードするのではなく、そのようにしたいと思います。

答えて

16

はい、相対パスを使用してください。 @".\test.txt"を使用している場合(つまり、@は文字列リテラルを実行していると言っていますが、これはエスケープ文字の必要性を取り除き、".\\test.txt"とすることもできますし、同じ場所に書き込むことになります)ほとんどの場合、あなたのプログラムが入っているフォルダです。

+0

甘い。短いとポイントに。どうもありがとう! – blutuu

8

Assembly.GetExecutingAssembly().Locationを使用すると、メインアセンブリ(.exe)のパスを取得できます。そのパスが保護されたフォルダ内にある場合(たとえばProgram Files)、ユーザーが管理者でない限り、そこに書き込むことはできません。これに頼らないでください。ここで

はサンプルコードです:

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

This question/answerは、あなたが書き込みアクセス権を持っているでしょう、ユーザーのプロファイルフォルダを取得する方法を示しています。または、ユーザーのMy Documentsフォルダを使用してファイルを保存することもできます。再度、アクセス権があります。そのパスを呼び出すことで得ることができます

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 
関連する問題