2012-11-18 4 views
1

세션간에 컨트롤의 내용을 저장해야합니다.IsolatedStorageFile이 파일에 쓰지 않습니다.

private void Window_Closing(object sender, CancelEventArgs e) 
    { 
     IsolatedStorageFile f = IsolatedStorageFile.GetUserStoreForAssembly(); 
     using(IsolatedStorageFileStream stream = new IsolatedStorageFileStream("somefilename", FileMode.Create, f)) 
     using(StreamWriter writer = new StreamWriter(stream)) 
     { 
      foreach(string path in searchFoldersListView.Items) 
      { 
       writer.WriteLine(path); 
      } 
     } 
    } 

이것은 윈도우의 Closing 이벤트에 부착이 내가 할 것입니다. 디버깅 할 때 컨트롤이 모든 항목을 통해 이동하지만 프로그램을 다시 실행할 때 컨트롤이 비어 있습니다. 파일로 이동하면 파일이 비어있는 것입니다. foreach 루프에 File.AppendAllText()을 넣어서 일반 파일로 저장하도록 코드를 변경하면 해당 파일이 잘 저장됩니다. 왜 그런가요?

편집 : 읽기 이벤트 핸들러 :

private void Window_Initialized(object sender, EventArgs e) 
    { 
     IsolatedStorageFile f = IsolatedStorageFile.GetUserStoreForAssembly(); 
     using(IsolatedStorageFileStream stream = new IsolatedStorageFileStream("somefilename", FileMode.OpenOrCreate, f)) 
     using(StreamReader reader = new StreamReader(stream)) 
     { 
      string line = reader.ReadLine(); 
      while(line != null) 
      { 
       searchFoldersListView.Items.Add(line); 
      } 
     } 
    } 
+1

실제로 파일을 읽는 코드를 작성 했습니까? 왜 그걸 게시하지 않았 니? –

+1

'IsolatedStorageFile'도'IDisposable'입니다. 'using' 문에도 넣으십시오. –

+0

@HansPassant 파일을 탐색하여 파일이 비어 있음을 확인한 이후 중요하지 않은 것을 찾지 못했습니다. 어쨌든 추가되었습니다. –

답변

0

파일에서 읽고 당신의 방법에 버그가 있습니다. 첫 번째 줄은 아마도 null입니다. 다음을 시도해보십시오.

using(StreamReader reader = new StreamReader(stream)) 
    { 
     string line = reader.ReadLine(); 
     while(line != null) 
     { 
      searchFoldersListView.Items.Add(line); 
      line = reader.ReadLine(); 
     } 
    } 
관련 문제