2013-07-18 2 views
-1

여기 내 코드입니다 :배열의 끝에 문자를 기입

for (int j = 0; j < bufferreader.Length; j++) 
{ 
    using (StreamWriter sw = File.AppendText(@"C:\Users\yamald\Documents\Normal.data")) 
    { 
     //sw.Write(); 

     if (bufferreader.length != null) 
     { 
      sw.Write(bufferreader[j] + ","); 
     } 
     else 
     { 
      sw.WriteLine("\n"); 
     } 
    } 
} 

가 어떻게 내 파일에 배열의 끝에 "\ n을"을 쓸 수 있습니까? else 명령이 실행되지 않습니다.

답변

0

for 루프 뒤에 sw.WriteLine("\n");을 입력해야합니다.

j = bufferreader.length 일 때 루프가 중지되므로 if 문은 항상 true입니다.

또한이 변수를 수정하지 않으므로 bufferreader.length가 null이되지 않습니다. 당신이 필요로하는 것 같아요 :

+0

이 문제는'sw'가'for' 루프 외부에 존재하지 않을 것이므로'using' 대신에 아마 선언해야 할 필요가 있습니다. – SharkofMirkwood

+0

실제로. 어쩌면 내부에 넣어 사용합니다. – EoiFirst

+0

네, 그게 효과가 있습니다. 사실 나는 이것을 반영하기 위해 나의 대답을 바꾸었다. 귀하의 제안에 대한 답변에 +1하십시오. – SharkofMirkwood

0

당신은 아마 다른 모든 전에 StreamWriter는 객체를 만들고 다음과 같이 루프가 완료 될 때까지 사용할 수, 그럼 그냥 루프 후 newline 쓰기이 있어야합니다

using (StreamWriter sw = File.AppendText(@"C:\Users\yamald\Documents\Normal.data")) 
{ 
    for (int j = 0; j < bufferreader.Length; j++) 
    { 
     sw.Write(bufferreader[j] + ","); 
    } 
    sw.WriteLine("\n"); 
} 

또한 아마도 더 나은 사용하는 것 while 루프를 수행하고 for 루프와 if 문 대신 while(bufferreader.length != null)과 같은 작업을 수행하십시오. 그러나 이는 사용자에게 달려 있으며 잠시 동안 bufferreader를 사용하지 않았기 때문에 정확한 구문을 알지 못합니다.

그러나 실제로 else이 실행되지 않는 이유는 (실제로 EoiFirst가 올바르게 말했듯이) 실제로 null이되지 않도록 bufferreader.length를 변경하지 않는다는 것입니다.

+0

고맙습니다. 일단 배열의 내용을 파일에 쓰고 각각의 끝에 '\ n'을 쓰려고하면 열. 그러면 데이터 세트가 생성됩니다. – Yamur

+0

당신은 여전히 ​​while 루프를 사용할 수 있으며 루프 다음에 (이 솔루션 이후와 같이)'/ n'을 씁니다. 그것은 하나의 루프 동안 각 라인에 대해서만있을 것입니다. 그러나 실제로는 차이가별로 없으므로 걱정하지 마십시오. – SharkofMirkwood

+0

나는 당신의 해결책에 대해 완전히 염려하지만 나는 한 가지 예를 들어주기를 희망한다. 왜이 주제가 내 과목을 가리키고 있나? 'while (bufferreader.lenght! = null) sw.Write (bufferreader [i] + ",");'맞습니까? – Yamur