XML 파일을 독점적으로 열고 수정 한 다음 저장해야합니다.독점적으로 XML 파일을 열거 나 수정합니까?
나는 그것을 열고하게 수정을 아주 쉽게과 같이 할 수 있습니다 : 모든 위대한 작품을
DataSet ds = new DataSet();
ds.ReadXml(filename);
DataTable table = ds.Tables[0];
DataRow[] rows = table.Select("Inventory== 1");
DataRow row = rows[0];
row["Inventory"] = "2";
ds.WriteXml(filename);
을하지만, 파일을 잠그지 않습니다. 나는 절대적으로 파일을 잠글 필요가있다.
그래서 나는 스트림과 그것을 시도 : 독점적으로 파일을 열고, 그러나 저장할 때, 그것은 시간의 마지막에 XML을 추가
이FileStream stream = File.Open(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
DataSet ds = new DataSet();
ds.ReadXml(stream);
DataTable table = ds.Tables[0];
DataRow[] rows = table.Select("Inventory== 1");
DataRow row = rows[0];
row["Inventory"] = "2";
ds.WriteXml(stream);
stream.Close();
, 그것을 덮어 쓰지 않습니다, 그래서 같은 끝낼 :
<Widgets>
<Widget Code="5" Number="10" Inventory="1" />
<Widget Code="6" Number="11" Inventory="15" />
<Widget Code="7" Number="12" Inventory="22" />
</Widgets>
<Widgets>
<Widget Code="5" Number="10" Inventory="2" />
<Widget Code="6" Number="11" Inventory="15" />
<Widget Code="7" Number="12" Inventory="22" />
</Widgets>
내가 원하는 것은 :
<Widgets>
<Widget Code="5" Number="10" Inventory="2" />
<Widget Code="6" Number="11" Inventory="15" />
<Widget Code="7" Number="12" Inventory="22" />
</Widgets>
은 내가 파일을 열 수 있습니다 알고 유 se File 메서드를 한 줄 한 줄씩 파싱하고 변경합니다 ...하지만 좀 더 우아 해지기를 바랬습니다. ReadXml을 사용하여 파일을로드하는 첫 번째 방법은 파일 수정만으로 충분하지만 파일을 단독으로 여는 옵션은없는 것으로 보입니다. 내가 놓친 게 있니?
좋습니다! 나는 그것이 내가 놓치고 있었던 것이 단순해야만한다는 것을 알았다! – BDW
@Walt W : 새로운 데이터를 작성한 후에도 setlength를 호출 할 수 있습니다.이 방법은 잠재적으로 더 효과적입니다 (더 길면 효과가 없으므로 길이가 짧으면 hte 길이를 한 번만 재설정합니다. 쓰기 ...) –
@ 리치 복사 : 사실입니다. –