13

私はクラスのプロジェクトに取り組んでいます。私がしなければならないことは、解析された命令をファイルにエクスポートすることです。Microsoft には、ファイルへの書き込み方法を説明する次の例があります。

// 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"ます。

4

3 に答える 3

25

はい、相対パスを使用してください。使用すると@".\test.txt"(@は文字列リテラルを実行していると言っているだけで、エスケープ文字の必要がなくなるため".\\test.txt"、同じ場所に書き込むこともできます)、現在の作業ディレクトリにファイルを書き込みます。ほとんどの場合、プログラムを含むフォルダーです。

于 2013-10-12T02:06:03.590 に答える
11

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

サンプルコードは次のとおりです。

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

この質問/回答は、書き込みアクセス権を持つユーザーのプロファイル フォルダーを取得する方法を示しています。または、ユーザーのMy Documentsフォルダーを使用してファイルを保存することもできます。この場合も、そのフォルダーへのアクセスが保証されます。呼び出すことでそのパスを取得できます

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
于 2013-10-12T02:07:10.520 に答える