将xml从一个文件夹移动到另一个文件夹时出错。字母之间为空

将xml从一个文件夹移动到另一个文件夹时出错。字母之间为空,xml,vb.net,windows,web-services,wcf,Xml,Vb.net,Windows,Web Services,Wcf,我正在尝试将XML文件从服务器中的文件夹移动到另一台服务器。移动xml时,在字母之间显示为空。 (示例:!='我解决了我的问题。问题不是打开和读取服务器中的字节。问题在于文件源(在转到收到的文件夹之前) 当我写文件的字节时,我使用方法读写文件的字节,然后将文件移动到“Received”文件夹。该方法为字符串的每个字节提供一个空字节 Byte[] MyBytes = GetBytes(MyDataSet.GetXml()) // MyBytes == {[F], 0 , [O] , 0 , [R

我正在尝试将XML文件从服务器中的文件夹移动到另一台服务器。移动xml时,在字母之间显示为空。
(示例:!='我解决了我的问题。问题不是打开和读取服务器中的字节。问题在于文件源(在转到收到的文件夹之前)

当我写文件的字节时,我使用方法读写文件的字节,然后将文件移动到“Received”文件夹。该方法为字符串的每个字节提供一个空字节

Byte[] MyBytes = GetBytes(MyDataSet.GetXml())

// MyBytes == {[F], 0 , [O] , 0 , [R] , 0 , [M]}
也许我得到这个答案的原因是Tim S.说的。GetBytes方法可能是以不同的编码读取字符串

方法
MyDataSet.GetXml()
提供的Xml文本没有编码{(删除brakets)。因此,当我决定删除零字节时,我无法使用
DataSet.ReadXml()

当我发现这些错误时,我决定改变读取文件字节的方式。我没有使用
GetBytes(MyDataSet.GetXml())
,而是使用了这个函数

public byte[] GetBytesFromFile(string FilePath)
    {
        FileStream Reader = null;;
        byte[] bts = null ;
        try
        {
            Reader = new FileStream(FilePath, FileMode.Open);
            bts = new byte[Reader.Length];
            Reader.Read(bts, 0, (int)Reader.Length);
            Reader.Close();
        }
        catch (Exception ex)
        {
            bts = null;
        }
        finally
        {
            if (Reader != null)
                Reader.Close();
        }
        return bts;
    }
为什么我决定不使用GetXml()方法?因为当我读取结果字节时,我正在编写一个没有编码的XML

谢谢Tim S.的创意


您在读写文件时使用的是什么文本编码?我想您可能混淆了ASCII(或UTF8)字节和UTF-16字节(或
char
s)沿途的某个地方。从代码中不清楚什么是
sb
,但听起来目的地是使用
UTF-16
字符编码编写的,对于拉丁字符,每个字符之间都有一个
NULL
。因此,请检查目的地流是如何创建的(正如Tim s.建议的).我真的不知道我使用的方法是UTF8还是UTF16字节。但我认为这就是问题所在。谢谢你的想法。对不起,我的英语
public byte[] GetBytesFromFile(string FilePath)
    {
        FileStream Reader = null;;
        byte[] bts = null ;
        try
        {
            Reader = new FileStream(FilePath, FileMode.Open);
            bts = new byte[Reader.Length];
            Reader.Read(bts, 0, (int)Reader.Length);
            Reader.Close();
        }
        catch (Exception ex)
        {
            bts = null;
        }
        finally
        {
            if (Reader != null)
                Reader.Close();
        }
        return bts;
    }