将xml从一个文件夹移动到另一个文件夹时出错。字母之间为空
我正在尝试将XML文件从服务器中的文件夹移动到另一台服务器。移动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
(示例:!='我解决了我的问题。问题不是打开和读取服务器中的字节。问题在于文件源(在转到收到的文件夹之前) 当我写文件的字节时,我使用方法读写文件的字节,然后将文件移动到“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;
}