2010-07-08 2 views
8

Visual C#을 사용하여 텍스트 상자의 내용을 텍스트 파일로 저장하려고합니다. 나는 다음과 같은 코드를 사용Visual C# - 텍스트 상자의 내용을 .txt 파일로 작성

private void savelog_Click(object sender, EventArgs e) 
    { 
     if (folderBrowserDialog3save.ShowDialog() == DialogResult.OK) 
     { 
      // create a writer and open the file 
      TextWriter tw = new StreamWriter(folderBrowserDialog3save.SelectedPath + "logfile1.txt"); 
      // write a line of text to the file 
      tw.WriteLine(logfiletextbox); 
      // close the stream 
      tw.Close(); 
      MessageBox.Show("Saved to " + folderBrowserDialog3save.SelectedPath + "\\logfile.txt", "Saved Log File", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 
    } 

하지만 난 단지 TEXTFILE에서 텍스트의 다음 줄 수 : 텍스트 상자에 실제로 있었는지의 짧은 부분에 의해 이어

System.Windows.Forms.TextBox, Text: 

, '끝났다

을 ... '. 텍스트 상자의 전체 내용을 쓰지 않는 이유는 무엇입니까?

답변

20

이 경우 TextWriter를 사용하지 않아도됩니다.

File.WriteAllText(filename, logfiletextbox.Text) 

은 더 간단합니다. 오랜 시간 동안 열어야하는 파일에는 TextWriter를 사용합니다.

+1

'filename' 매개 변수가 추가되었습니다. 좋은 점은, 나는 똑같은 것을 쓰려고했다. – MartinStettner

+0

그래, 나는 왜 소수의 개발자들이'System.IO' 네임 스페이스가 존재한다는 것을 알고, 왜 그렇게 진주를 알지 못하는지 궁금하다. – Bobby

+0

와우. 내 편이라. 감사! –

8
private void savelog_Click(object sender, EventArgs e) 
    { 
     if (folderBrowserDialog3save.ShowDialog() == DialogResult.OK) 
     { 
      // create a writer and open the file 
      TextWriter tw = new StreamWriter(folderBrowserDialog3save.SelectedPath + "logfile1.txt"); 
      // write a line of text to the file 
      tw.WriteLine(logfiletextbox.Text); 
      // close the stream 
      tw.Close(); 
      MessageBox.Show("Saved to " + folderBrowserDialog3save.SelectedPath + "\\logfile.txt", "Saved Log File", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 
    } 

작은 설명 : tw.WriteLine 그래서 당신이 통과 할 것을 상관하지 않는다 object을 받아들입니다. 내부적으로 전화는 .ToString입니다. .ToString이 재정의되지 않으면 유형의 이름 만 반환됩니다. .Text 내가 무엇을 당신이 필요로하는 것은 생각 TextBox

+0

오, 어리석은 실수 ... 정말 고마워! – muttley91

+1

이것을 답으로 표시하십시오. – tobsen

7

의 내용 속성입니다 :

tw.WriteLine(logfiletextbox.Text); 

당신이 도움이

희망을 무엇을 얻을 그 '는 .text'를 말하지 않는 경우에!

2

옵션 : WriteLine()을 사용하여 파일에 저장 한 내용이 텍스트 상자, 플러스 바꿈의 텍스트입니다 있습니다. 따라서 파일의 내용이 TextBox의 내용과 정확히 일치하지 않습니다. 이 점에 대해 언제 생각하니? 이 파일을 사용하여 나중에 텍스트 상자의 Text 속성에서 다시 읽은 다음 저장 ->로드 -> 저장 ->로드를 수행하면 ...

모든 텍스트를 보존하기로 선택한 경우 (using System.IO) :

파일. WriteAllText (파일 이름, 텍스트 상자 텍스트)

파일. WriteAllLines (파일 이름, 텍스트 상자. Lines)이 TextWriter에를 사용하여 주장하는 경우

, 당신은 당신이 당신의 쓰기 방법에서 복잡한 논리를 사용해야 할 경우, 스트림 폐기 처리 할 using 래퍼를 사용할 수 있습니다.

using(TextWriter tw = new ...) 
{ 
    tw.Write(textBox.Text); 
} 

읽기 또는 쓰기를 위해 파일에 액세스하려고 할 때마다 IOException이 발생할 수 있습니다. IOException을 잡아서 응용 프로그램에서 처리하는 것을 고려하십시오 (텍스트 유지, 텍스트를 저장할 수 없음을 사용자에게 표시, 다른 파일 선택 제안 등).

관련 문제