2016-05-05 6 views
2

私はC#のを習い始め、それはあなたが、出力ファイルの書き込みや、入力ファイルを読んでいるときのように見えますが、あなたは絶対パスを提供する必要がありますStreamWriterのインスタンス化するときに、絶対的なディレクトリを提供する必要があるようにそれは見て:私は両方のC++とPythonで書かれているC#アプリケーションの相対パス

https://msdn.microsoft.com/en-us/library/8bh11f1k.aspx

をとt内のファイルにアクセスするとき、あなたは絶対ディレクトリを指定する必要はありませんホース言語、実行可能ファイル/スクリプトからのパス。ファイルを読み書きするたびに絶対パスを指定する必要があるのは不便なようです。

現在のディレクトリを取得して文字列に変換し、それをoutfile文字列名と組み合わせる簡単な方法はありますか?そして、絶対的なディレクトリを使うのは良いスタイルですか、それが可能であれば、それを「カレントディレクトリ」の文字列と素早く組み合わせることが望ましいですか?

ありがとうございました。

+0

[ 'Directory.GetCurrentDirectory'](https://msdn.microsoft.com/en-us/library/system.io.directory移動するにはあなたを助けることを願っていますC#の歓迎に感謝します。 getcurrentdirectory.aspx)と['Path.Combine'](https://msdn.microsoft.com/en-us/library/system.io.path.combine.aspx) - 指定する必要はありません完全なパス。相対パスはC#でも動作します。 –

答えて

4

あなたは、相対ディレクトリもC#のために働く完全なディレクトリ毎回指定する必要はありません、あなたはway-

は、アプリケーションの現在の作業ディレクトリを取得し、次の使用して現在のディレクトリを取得することができます。

string directory = Directory.GetCurrentDirectory(); 

現在の作業ディレクトリの完全修飾パスを取得または設定します。

string directory = Environment.CurrentDirectory; 

取得プログラム実行可能ファイルのパスふてくされ

string directory = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); 

Resource Link 1Resource Link 2

1

、あなたが必要フルパスを指定していない、あなたが基準のこのタイプを実行する良い方法は何ですか?

は、あなたがして、あなたのアプリの.exe場所を取得することができますいくつかのより多くの方法

を流すことによって、指定Directory.GetCurrentDirectoryPath.Combine

を使用するようにコメントですでに言及@pswg相対パスを使用する必要がありますSystem.Reflection.Assembly.GetExecutingAssembly().Location.

string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location; 
string exeDir = System.IO.Path.GetDirectoryName(exePath); 
DirectoryInfo binDir = System.IO.Directory.GetParent(exeDir); 
一方、

内部では、Environment.CurrentDirectoryを取得するとDirectory.GetCurrentDirectoryと呼びますEnvironment.CurrentDirectoryと設定すると、Directory.SetCurrentDirectoryが呼び出されます。

お気に入りを選択してください。

は、あなたが、私はそれが楽しみ