2016-09-12 6 views
0

내 사용자 지정 클래스의 인스턴스를 파일에 저장하는 메서드가 있습니다. 이 파일은 0 값 바이트 (null 문자)로 채워지기 때문에 한 번은 응용 프로그램이 시작되지 않는 것으로 나타났습니다. 전에는 이런 일이 없었습니다. 잘 작동하는 것처럼 보였습니다. 누구든지이 코드로 이상한 것을 보았습니까? serializer 또는 메모리 스트림에서 0의 배열을 반환 할 수있는 원인이 있습니까? 아니면 그것이 다른 응용 프로그램의 작업이라고 의심해야합니까?XmlSerializer 및 MemoryStream이 0 값 바이트 배열을 반환 할 수 있습니까?

private readonly XmlSerializer _serializer = new XmlSerializer(typeof(MySettings)); 

    public void Save(MySettings config) 
    { 
     using (var stream = new MemoryStream()) 
     { 
      _serializer.Serialize(stream, config); 
      byte[] binaryConfig = stream.ToArray(); 
      File.WriteAllBytes(_configFilePath, binaryConfig); 
     } 
    } 

답변

0

이런 식으로 사용하는 것이 더 간단하지 않습니까? 개체 직렬화시 XML 텍스트로 변환 될 때

XmlSerializer x = new XmlSerializer(typeof(MySettings)); 
using (FileStream stream = new FileStream(_configFilePath, FileMode.Create, FileAccess.Write)) 
    { 
     x.Serialize(stream, config); 
     stream.Close(); 
    } 

XML 파일은 모든 0 바이트 nul 문자를 포함 할 수 없습니다. 파일 내용을 보려면 텍스트 편집기를 사용하여 XML 파일을 열면됩니다.