私はオブジェクト(Carクラス)をシリアル化してxmlファイルとして保存しています。しかし時々(非常にまれなイベント、私はそれを複製することはできません)ファイルサイズが正しいにもかかわらず、null文字(ASCIIコード0の文字)のみを含むファイルを取得します。XMLシリアル化の結果、ファイルがヌル文字でいっぱいになる
public void SaveCar(Car car)
{
var serializer = new XmlSerializer(typeof(Car));
using (var stream = new MemoryStream())
{
serializer.Serialize(stream, car);
byte[] binaryCar = stream.ToArray();
FileHelper.WriteAllBytes(@"C:\car.xml", binaryCar);
}
}
FileHelper.WriteAllBytesが存在しない場合、それは親ディレクトリを作成することを除いて、System.IO.File.WriteAllBytesと同じです。
public static class FileHelper
{
public static void WriteAllBytes(string path, byte[] bytes)
{
CreateParentDirectoryForPathIfDoesntExist(path);
File.WriteAllBytes(path, bytes);
}
public static void CreateParentDirectoryForPathIfDoesntExist(string filePath)
{
var file = new FileInfo(filePath);
if (file.Exists)
{
return;
}
if (file.Directory != null && !file.Directory.Exists)
{
Directory.CreateDirectory(file.Directory.FullName);
}
}
}
何が原因なのですか?エンコーディングの問題?
でテストしたときでしょうか?特定のファイルについては?特定の車ですか? 'NUL'文字を持つファイルの作成を確実に実証する[mcve]は役に立ちます。 –
そして 'FileHelper'についてもっと具体的になります。候補の問題のソースのように見えます。 –
あなたの質問に 'FileHelper'のコードを入れてください。 –