2009-10-12 2 views
7

Windows Forms 응용 프로그램에서 텍스트 파일을 만들려고합니다. 잘 작동하지만 응용 프로그램의 기본 위치 (예 : bin 폴더)에 텍스트 파일을 만듭니다. 하지만 나는 사용자 파일 폴더에 그 텍스트 파일을 저장하고 싶습니다. 내가 어떻게 해?userfiles 폴더에 파일 만들기 (C#, Windows Forms)

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 : \ 사용자 \ 참고 MyUser 문서 \ USERINFO.TXT \");

+0

내 응용 프로그램 폴더 (dynamicall)에만 만들고 싶습니다. – Nagu

+1

응용 프로그램으로 내 문서 폴더에 있어야합니다. * My Documents는 저렇게 불립니다. 왜냐하면 * I *는 무작위로 응용 프로그램을 만들지 않기 때문입니다. 이미 잘못 이해할 수있는 프로그램이 충분합니다. – Joey

1

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

또는

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

오, 감사합니다. – Nagu