저는 (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' 코드를 포함하십시오. –