Как записать данные XML в несколько файлов, проверив размер файла - PullRequest
0 голосов
/ 12 ноября 2010

Я создаю карту сайта xml! Существует ограничение в 50 КБ или 10 МБ. Есть ли способ проверить размер файла и записать в новый XML-файл при достижении предела размера 10 МБ? Я использую XmlTextWriter (C #) для создания XML-файлов

1 Ответ

1 голос
/ 12 ноября 2010

Если вы используете XmlTextWriter, вы можете передать пользовательский System.IO.Stream для обработки ограничения размера в 10 МБ. Ваш пользовательский поток будет обрабатывать мониторинг размера файла и создавать новый файл через определенный интервал.

Таким образом, вы можете придумать что-то вроде:

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. А затем, когда пост-процесс разделил их.

...