ストリームライターを使用してドキュメント フォルダーにテキスト ファイルを作成しようとしていますが、実際にはフル パスを使用しているときに相対パスを使用していると見なされます。
このパス「%HOMEPATH%/My Documents/」を使用してファイルを作成しようとしていますが、これは相対パスとして扱われます。
どんな助けでも感謝します、ありがとう。
ストリームライターを使用してドキュメント フォルダーにテキスト ファイルを作成しようとしていますが、実際にはフル パスを使用しているときに相対パスを使用していると見なされます。
このパス「%HOMEPATH%/My Documents/」を使用してファイルを作成しようとしていますが、これは相対パスとして扱われます。
どんな助けでも感謝します、ありがとう。
- を使用する必要がありますEnvironment.GetFolderPath
。この場合、ハードコーディングMy Documents
をまったく回避できます。
string docs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
それに関連するディレクトリ名を取得したい場合は、次を使用する必要がありますPath.Combine
。
string fooDocsDirectory = Path.Combine(docs, "foo");
.Net でユーザーの Documents フォルダーを取得する正しい方法は、 を使用Environment.GetFolderPath()
して渡すことですEnvironment.SpecialFolder.MyDocuments
。
システム変数を使用するのではなく、System.Environment.SpecialFolder.MyDocumentsを使用して My Documents パスにアクセスします。
コマンドプロンプトから環境変数を確認してください。私のマシンに次のように表示されます-
ホームドライブ=C:
HOMEPATH=\Users\foo
したがって、問題を解決するには、代わりに %HOMEDRIVE%%HOMEPATH% を試してください
何らかの API を使用して環境変数を解決し、絶対パス (「C:.....」) を含むパスをStreamWriterに入力します。
David Staratton が提案したように、Environment.SpecialFolder Enumerationを使用できます。