TextWriter를 사용하는 경우 스트림을 절단하는 방법 : 나는 TextWriter
를 사용하여 내 XDocument
스트림에 직렬화 한 후 종료 후 스트림을 절단 할이 조각은 매우 자명해야
XDocument xd = ....
using (FileStream fs = new FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite))
{
using (TextWriter tw = new StreamWriter(fs))
{
xd.Save(tw);
}
fs.Flush();
fs.SetLength(fs.Position);
}
을 . 불행히도 Save()
작업은 스트림을 닫아 내 Flush()
호출이 예외를 생성합니다.
현실 세계에서 필자는 실제로 파일에 직렬화하지는 않지만 내 제어 밖에있는 다른 종류의 스트림을 직렬화하므로 파일을 먼저 삭제하는 것만 큼 간단하지 않습니다. 당신이 스트림
using (FileStream fs = new FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite))
{
using (TextWriter tw = new StreamWriter(fs))
{
tw.Flush();
xd.Save(tw);
fs.SetLength(fs.Position);
}
}
Andy는'using' 절 주위에 코드를 래핑 할 때 프로세스가'using() {}'블록을 벗어나면 객체가 자동으로 삭제되고 기본 객체가 닫힙니다. – MethodMan
Andy가 궁금한 점이 있으면 어떻게/어디에서'XDocument xd = ....'를 사용하고 있습니까? – MethodMan