Ceci est mon code actuel:Comment convertir en toute sécurité `ToBase64String` en morceaux?
public void WriteXml(System.Xml.XmlWriter writer)
{
CloseConnection();
using (Stream source = File.Open(DataBaseFileName, FileMode.Open))
{
byte[] buffer = new byte[source.Length];
source.Read(buffer, 0, (int)source.Length);
writer.WriteString(Convert.ToBase64String(buffer));
}
OpenConnection();
}
Ce que cela fait est une base de données en intégrer un fichier XML (cette méthode appartient à la classe d'un champ dans une autre classe qui est celui en cours de sérialisation). Le problème est que chaque fois que la base de données est d'environ 300 Mo, j'obtiens une exception OutOfMemory sur la ligne byte[] buffer = new byte[source.Length];
. Donc je pense que j'ai besoin de le faire sur des morceaux. Mais je ne suis pas sûr de savoir comment cela serait. Je pense que ces morceaux devraient être d'une taille particulière. Aussi, je pense que Convert.ToBase64String
ajoutera deux symboles "==" à la fin de la chaîne, donc je devrai probablement les effacer à chaque fois jusqu'à la dernière.
Pourquoi êtes-vous convertir un fichier de 300 Mo dans un fichier XML? –
Parce que je le veux. – Juan
Et parce que je veux l'intégrer dans le fichier "Project" où beaucoup d'autres choses sont enregistrées. Je devrais probablement utiliser la sérialisation binaire mais il y a d'autres choses que je dois corriger en premier. – Juan