2010-11-11 36 views

回答

1

如果您使用的是XmlTextWriter,則可以傳入自定義的「System.IO.Stream」來處理10MB大小的限制。您的自定義流將處理文件大小的監視並以特定間隔創建新文件。

所以,你可能對類似設計:

var folder = @"C:\temp"; 
var maxSizeInBytes = 10240; 
var stream = new SegmentedStream(folder, maxSizeInBytes); 

var xmlWriter = new XmlTextWriter(stream, Encoding.UTF8); 

int maxRecords = 50000; 
int i = 0; 
foreach (var url in UrlList){ 
    i++; 

    if (i == maxRecords){ 
     stream.StartNewFile(); // custom method on your SegmentedStream class 
     i == 0; 
    } 

    // TODO: write URL using xmlWriter 
    // explicitly calling Flush on the xmlWriter, may be appropriate 
} 

我不知道的XmlTextWriter執行得很好,但你可能必須要聰明,這樣你不一個XML結束節點跨越兩個文件。

更新:一個更好的辦法可能是隻寫整個XML文件。然後作爲後期流程分解它們。