ファイルがある場合、アプリケーションはどこを見ますか検索?どこで作成されますか?常に絶対パスを指定することはめったに現実的ではありません。たとえば、Visual Studio 2010アプリで使用するテキストファイルをプロジェクトソリューションのローカルビンに保存しようとしましたが、常にランタイムエラーが発生しました。
回答:
回答№1は0通常は、それが呼び出されたフォルダです。 _getcwd
: http://msdn.microsoft.com/en-us/library/sf98bd4y%28VS.80%29.aspx
回答№2の場合は0
相対パスを使用する場合、指定したパスはプロセスの作業ディレクトリと結合されます。
制御を維持するのは非常に難しいGUIプロセスの作業ディレクトリ。これは、GUIプロセスがさまざまな方法で開始される傾向があるためです。さらに、ファイルダイアログは作業ディレクトリを変更する傾向があります。最後に、作業ディレクトリはプロセス内のすべてのスレッド間で共有され、どのスレッドでも変更できます。落とし穴はたくさんあります。
したがって、GUIプロセスでは、使用しないことをお勧めします相対パス。または、相対パスを使用する場合は、使用する前に絶対パスに変換します。そして、明確に定義されたルートパスに対してその変換を実行します。
ポータブルアプリを作成している場合を除き、実行可能ファイルを含むディレクトリに保存できることを期待しないでください。現代のシステムでは、実行可能ファイルは多くの場合、読み取り専用ディレクトリにあります。
ユーザー設定を保存する場合は、ユーザーのプロファイルの適切な場所に保存します。
一方、読みたい場合変更しないファイルを実行可能ファイルと一緒に保存するのが合理的です。しかし、その場合でも、絶対パスを使用してファイルを開きます。実行可能ファイルを含むディレクトリと相対パスを組み合わせて、そのパスを作成しますファイルに。
要約すると、あなたは言った:
常に絶対パスを指定することはほとんど現実的ではありません。
しかし、私は同意しません。私は、絶対パスを使用することが多くの場合最良の選択肢であることに反論します。ただし、絶対パスをハードコーディングする必要はありません。実行時に作成できます。