2012-01-02 3 views
0

가능한 중복 텍스트를 쓸 수 없습니다 : 그하지만 난 텍스트 파일에 일부 데이터를 쓸 수없는 이유를 잘 모르겠어요
The file is being used by another process, I must close it? How?나는 텍스트 파일로

. 나는 이렇게하고있다 :

private void CreateLastOpenFile() 
    { 
     if (!Directory.Exists(directory)) 
     { 
      Directory.CreateDirectory(directory); 
     } 

     if (!File.Exists(file)) 
     { 
      FileStream newFile = File.Create(file); 
      newFile.Close(); 
     } 

     using (StreamWriter lastOpenedFile = new StreamWriter(file)) 
     { 
      lastOpenedFile.WriteLine(filePath); 
     } 
    } 

내가 올바르게하고 있는가? 디렉토리가 있는지 확인해야 하는가? 파일이 있다면? 적절한 방법은 무엇입니까? MSDN에서 예제를 사용하고 있었지만 어떻게해야할지 모르겠습니다.

+0

은 file/filePath를 예상대로 사용하고 있는지 확인합니다. 그것은 당신이 그 (것)들을 거꾸로 가지고있는 것처럼 보인다. – AlanFoster

+5

당신이 이미 시작한 스레드의 답변을 보라. - http://stackoverflow.com/questions/8698879/the-file-is-being-used-by-another-process- i-must-close-it-how/8698914 # 8698914 – evilone

답변

1

차라리 할 거라고 : 존재하지 않는 경우

String p = Path.GetDirectoryName(fileName); 
if (!Directory.Exists(p)) 
{ 
    Directory.CreateDirectory(p); 
} 

FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write); 
using (StreamWriter writer = new StreamWriter(stream)) 
{ 
    ... 
    writer.Flush(); 
} 

이 새 파일을 만듭니다.

using은 작성자와 기본 스트림을 모두 닫는 Close을 차례로 호출하는 작성자에서 자동으로 Dispose을 호출합니다.

+0

디렉토리가 필요합니까? – HelpNeeder

+0

아니요. 디렉토리가없는 경우 내 답변을 업데이트했습니다. 필자의 예제에서'fileName' 변수는'C : \ Temp \ TestFile.txt'와 같은 경로와 파일 이름을 포함해야합니다. 그것은'C : \ Temp'과'TestFile.txt' 파일을 검사하고 작성합니다. –

+0

답변 해 주셔서 감사합니다. 한가지 더. 나는 Flush에 익숙하지 않다. 추천해야 하는가? – HelpNeeder

1

파일을 만들려면 이 필요하지 않습니다. StreamWriter가이 작업을 수행합니다. 그러나 당신이하는 것처럼 디렉토리가 존재하는지 확인해야합니다.

File.OpenText을 사용할 수도 있습니다.

+0

알기 좋은 링크이며 매우 유용합니다. 감사합니다! – HelpNeeder

관련 문제