2013-05-17 3 views
0

텍스트 파일에서 픽셀 값을 읽고 이미지 파일을 생성하려고합니다. 하지만 먼저 파일의 모든 값을 읽을 수 있는지 확인하려고합니다. 나는이 코드를 사용하지만 출력은 입력 파일의 정수 중 일부를 잃어 버린다. 나는 이유를 모른다! 너 나 좀 도와 줄 수있어?C#에서 텍스트 파일의 정수를 읽고 배열에 쓰기

namespace txtToImg 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      TextWriter tw = new StreamWriter("D:\\out.txt"); 
      string fileContent = File.ReadAllText("D:\\in.txt"); 

      string[] integerStrings = fileContent.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

      int[] integers = new int[integerStrings.Length]; 
      //tw.Write(integerStrings.Length); 

      for (int n = 0; n < integerStrings.Length; n++) 
      { 
       integers[n] = int.Parse(integerStrings[n]); 

       tw.Write(integers[n]+" "); 


      } 
     } 
    } 
} 
+2

은 내가에서는 StreamWriter 개체가 닫혀지고하지 않는 것으로 알 수 있습니다. 그게 어떤 차이를 만들지 모르겠지만, 내가 볼 수있는 유일한 명백한 것. – Andrew

+0

'fileContent.Split (new char [] { '', '\ n'}, ...')이 아니어야합니다. –

+0

정수가 공백으로 나뉘어져 있습니다. '\ n'또는 ','감사합니다! – fanciulla

답변

2

내가 앤드류의 의견에 동의 한 가지 내가 이것을 시도 할 것입니다 귀하의에서는 StreamWriter 개체가 닫혀지고되지 않은 : 여기에 코드입니다. 나는 아래 변경을했고 당신이하고있는 일을 시도했고 출력 파일에는 모든 항목이 들어있었습니다.

using (TextWriter tw = new StreamWriter(@"D:\out.txt")) 
     { 
      string fileContent = File.ReadAllText(@"D:\in.txt"); 

      string[] integerStrings = fileContent.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

      int[] integers = new int[integerStrings.Length]; 

      for (int n = 0; n < integerStrings.Length; n++) 
      { 
       integers[n] = int.Parse(integerStrings[n]); 
       tw.Write(integers[n] + " "); 
      } 
     } 
+0

네, 그 역시 훌륭합니다! 고마워, Bearcat! – fanciulla

+0

다행히 문제가 해결되었습니다! – Bearcat9425

+0

Ana이 대답이 문제를 해결 한 경우 질문의 대답으로 선택하는 것을 잊지 마십시오. – Mehran

0

오른쪽, 나는 단지 그것을 실행 한 내가 의심 당신은 루프 후 다음이 필요합니다

tw.Close(); 
+0

Andrew와 같이 using 문에 TextWriter를 래핑 할 것을 제안했습니다. 그것은 IDiposable을 구현하므로 닫는 중괄호 tw가 제대로 처리 된 후 out 파일이 해제되어 다른 프로세스에서 액세스 할 수 있습니다. – Bearcat9425

관련 문제