2017-12-01 10 views
-2

저는 학교에서 계산기 프로젝트를하고 있습니다.C# streamwriter가 추가 정보를 덮어 쓰지 않습니다.

1|peter|DESKTOP-P6IL7VV|19/11/2017 11:38:11 ==> 5 x 5=25  
2|peter|DESKTOP-P6IL7VV|19/11/2017 11:38:15 ==> 25 + 3=28  
3|peter|DESKTOP-P6IL7VV|19/11/2017 11:38:27 ==> 28/2=14  
4|peter|DESKTOP-P6IL7VV|19/11/2017 11:38:31 ==> 14 + 6=20  
5|peter|DESKTOP-P6IL7VV|19/11/2017 11:38:35 ==> 20 - 20=0     
(example from my teacher) 

하지만 난 뭔가를 쓸 때마다, 그것은 첫 번째 줄을 삭제하고 만 덮어 쓰기 :

내가 텍스트 문서 내 작업을 덮어 쓰기에 문제가 일반적으로 난 내 텍스트 파일이 있어야한다 마지막 작업, 나는 결과 버튼을 클릭 매번 필요가 번호

여기

의 순서로 내 파일을 덮어 내 코드입니다 :

private void result_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      result(); 
     } 
     catch (Exception exc) 
     { 
      txtIngave.Text = "Error!"; 
     } 
     try 
     { 
      if (!txtResultaat.Text.Equals(string.Empty) && btnLog.IsChecked 
      == true) 
      { 
       int i = 1; 
       using (StreamWriter myOper = new 
    StreamWriter(@"C:\Users\Achraf Alajdi\Documents\Visual Studio 
     2017\Projects\TaakCalculator\log\log.txt")) 
       { 
        myOper.WriteLine(i.ToString() + " | " + "Achraf | " + System.Environment.MachineName + " | " + DateTime.Now.ToLongTimeString() + " | ==> " + txtResultaat.Text); 
       } 
       i++; 

      } 
     } 
     catch (Exception ex) 
     { 

      MessageBox.Show("Loser"); 
     } 
    } 
+1

추가 ** 진정한 **에서 새로운 에서는 StreamWriter (@ "C 라프 Alajdi \ 문서가 프로젝트 \ TaakCalculator \ 로그 \의 log.txt에 \ Visual Studio를 2017 \ \ \ 사용자"** ** 참) 텍스트를 추가하려면 –

답변

0

TR Y 파라미터와 append

StreamWriter(string path, bool append) 

생성자 인 true. documentation에서

: 파일에 데이터를 추가 할

사실

APPEND; 거짓을 사용하여 파일을 덮어 씁니다. 지정된 파일이 없으면이 매개 변수는 영향을주지 않으며 생성자는 새 파일을 만듭니다.

+0

고마워요. 고쳐졌지만, 제 int는 1 번에 머물러 있습니다. 어떻게 고칠 수 있나요? –

+0

@ ach.ala 메소드를 호출 할 때마다 다시 1로 설정했기 때문입니다. 선언을 메서드 외부에두면 1로 재설정되지 않습니다. –

+0

@ ach.ala : 물론. 1로 파일 쓰기 전에 'i'를 초기화하고 파일에 가상으로 즉시 씁니다. 블록을 빠져 나오 자마자'i'는 * 잊어 버렸습니다 * 그리고 파일에 쓰기 전에 다시 1로 설정됩니다. 값을 유지하려면 클래스의 인스턴스 변수로'i' (더 나은 이름을 생각해보십시오)를 선언해야합니다. –