2014-09-25 2 views
0

바이트 배열 내용을 메모리에 파일에 쓰려고합니다.바이트 배열에서 C로 파일 쓰기 #

var bw = new BinaryWriter(File.Open("c:\\Tmp\\" + a.Name, FileMode.OpenOrCreate)); 
    bw.Write(((FileAttachment)a).Content); 

하지만 내가 파일을 작성 내 C#을 죽일 내가 수동 때까지 '파일 탐색기'에서 파일을 열 수없는 경우에서 찾을 : 여기에 내가 무슨 짓을했는지입니다. 그게 뭔지 말해 줄 수 있어요?

감사합니다.

답변

3

BinaryWriter를 닫거나 닫으십시오.

Path.Combine(@"c:\Tmp\", a.Name); 
1

파일이 응용 프로그램에 의해 잠겨 있습니다.
모드를 설정할 수있는 thisFile.Open 메서드를 다시로드하는 것이 좋습니다.

using (var bw = new BinaryWriter(File.Open("c:\\Tmp\\" + a.Name, FileMode.OpenOrCreate, 
    FileAccess.Write, FileShare.Read)) 
{ 
    bw.Write(((FileAttachment)a).Content); 
} 

업데이트 : using 진술.

1

가 만들고있는 BinaryWriter은 다음과 같습니다

using (var bw = new BinaryWriter(File.Open("c:\\Tmp\\" + a.Name, FileMode.OpenOrCreate))) 
{ 
    bw.Write(((FileAttachment)a).Content); 
} 

또한, 당신이 읽을 수있는 디렉토리 이름을 만들기 위해 사용 된 @ (는 백 슬래시에 대한 처리됩니다) 지금부터 Path.Combine()을 사용할 수 있습니다 파일을 잠그고 있습니다. 파일을 처리하지 않았으므로 프로그램이 실행중인 동안 파일은 잠긴 상태로 유지됩니다.

그렇게하려면 수동으로 사용 후 폐기 할 수

var bw = new BinaryWriter(File.Open("c:\\Tmp\\" + a.Name, FileMode.OpenOrCreate)); 
bw.Write(((FileAttachment)a).Content); 
bw.Close(); 

사용을 자동으로 스트림 닫힙니다 Using 문 : 더 나은

using (BinaryWriter bw = new BinaryWriter(File.Open("c:\\Tmp\\" + a.Name, FileMode.OpenOrCreate))) 
{ 
    bw.Write(((FileAttachment) a).Content); 
} 

또는, File.WriteAllBytes를 사용 작성자 생성, 파일 열기 및 스트림 닫기를 하나의 간결한 줄에서 처리합니다.

File.WriteAllBytes("c:\\Tmp\\" + a.Name, ((FileAttachment) a).Content);