2009-10-12 9 views
7

Windows Formsアプリケーションでテキストファイルを作成しようとしています。正常に動作していますが、アプリケーションのデフォルトの場所(フォルダbinなど)にテキストファイルを作成しています。しかし、私は作成したテキストファイルを自分のユーザーファイルフォルダに保存したい。どうしたらいいですか?userfilesフォルダにファイルを作成する(C#、Windowsフォーム)

FileInfo fileusername = new FileInfo("userinfo.txt"); 
StreamWriter namewriter = fileusername.CreateText(); 
namewriter.Write(txtUsername.Text); 
namewriter.Close(); 

答えて

16

あなたはユーザーデータフォルダへのパスを取得するにはEnvironment.GetFolderPathを使用することができます。

string fileName = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "userinfo.txt"); 

が最良のあなたのニーズに合ったフォルダを見つけるためにEnvironment.SpecialFolder列挙のドキュメントを調べてください。

+0

私はそれをありがとうDirectory.GetCurrentDirectory() – Nagu

1

ちょうど のFileInfo fileusername =新しいのFileInfoのように、ファイル名にパスを追加します。

この

は私のコードです(@ "C:\ Users \ユーザーMyUserとドキュメント\ USERINFO.TXT \");

+0

自分のアプリケーションフォルダ(dynamicall)にのみ作成したい – Nagu

+1

アプリケーションとして、自分のドキュメントフォルダから明確にしてください。 * My Documentsはそのように呼び出されます。なぜなら、* I *は何かをランダムに適用するのではなく作成するからです。すでに間違っているプログラムがあります。 – Joey

1

String path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);

OR

String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
+0

アプリケーションとして私のドキュメントフォルダから明確にしてください。 * My Documentsはそのように呼び出されます。なぜなら、* I *は何かをランダムに適用するのではなく作成するからです。すでに間違っているプログラムがあります。 – Joey

+0

お返事ありがとうございます。しかし、私は正しく私の質問をフレーム化していないことを申し訳ありません。私はあなたのアプリケーションでforlderのみのファイルを作成したいと思っています(ここではc:\\ myapp \\ usercreatedfiles \)ここで私は – Nagu

+0

を作成したい@Nagu:それをしないでください:これには、アプリケーションがインストールされますが、これは一般的には良いことではありません。 –

2

あなたは私の文書を指すファイルパスを作成するためにEnvironment.SpecialFolderを使用することができます。

string filePath = System.IO.Path.Combine(Environment.SpecialFolder.ApplicationData.ToString(), "userinfo.txt"); 
+0

私は質問を間違えて、すでにそれを修正しました – Christian

6

あなたはEnvironment.SpecialFolder列挙と一緒Environment.GetFolderPath()機能を使用することができます。

用途:

String filePath = Path.Combine(
    Evironment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
    "userinfo.txt"); 

現在のユーザーMy Documentsフォルダ内のファイル名を作成します。

1

見た目から見ると、テキストファイルをカスタムディレクトリに作成するだけです。私のアドバイスは、パスの定数を作成することです(おそらくapp.configファイルに保存する)。

<appSettings> 
    <add key="UserInfo" value="/Settings/UserInfo.txt" /> 
</appSettings> 

のでかかわらず、あなたが設定は常に「はPathToExe /設定/ USERINFO.TXT」に保存されます、あなたのアプリケーションをインストールする場所のあなたのexeファイルへの相対パスを使用してください。

次に、あなたのようなものだろう。しかし、あなたがこのアプローチを使用してアクセス許可の問題に遭遇する可能性があり、レジストリにまたはのAppDataのいずれかで、このようなものを保存するために、通常は良いアイデアです

string UserInfoPath = ConfigurationManager.AppSettings["UserInfo"]; 
if (String.IsNullOrEmpty(UserInfoPath)) 
{ 
    // perhaps use a default value or raise an exception 
} 

FileInfo fileusername = new FileInfo(Path.Combine(Application.StartUpPath, UserInfoPath)); 
StreamWriter namewriter = fileusername.CreateText(); 
namewriter.Write(txtUsername.Text); 
namewriter.Close(); 

をディレクトリ。

+0

ああ、あなたにverymuchありがとう – Nagu

関連する問題