我从互联网上下载xml文件并将其保存在独立存储中。如果我尝试阅读它,我会收到错误:
根级别的数据无效。第1行,第1位。
string tempUrl = "http://xxxxx.myfile.xml"; // changed
WebClient client = new WebClient();
client.OpenReadAsync(new Uri(tempUrl));
client.OpenReadCompleted += new OpenReadCompletedEventHandler(delegate(object sender, OpenReadCompletedEventArgs e) {
StreamWriter writer = new StreamWriter(new IsolatedStorageFileStream("myfile.xml", FileMode.Create, FileAccess.Write, myIsolatedStorage));
writer.WriteLine(e.Result);
writer.Close();
});
这是我下载和保存文件的方式......
我试着这样读:
IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("myfile.xml", FileMode.Open, FileAccess.Read);
XDocument xmlDoc = XDocument.Load(fileStream);
这是我收到错误的地方......
在没有下载并将其保存到隔离存储的情况下读取同一文件没有问题...所以一定有错误。
答案 0 :(得分:8)
此:
writer.WriteLine(e.Result);
不符合您的想法。它只是在ToString()
上调用Stream
,并将结果写入文件。
我建议您完全避免使用StreamWriter
,只需将e.Result
直接复制到IsolatedStorageFileStream
:
using (var output = new IsolatedStorageFileStream("myfile.xml", FileMode.Create,
FileAccess.Write, myIsolatedStorage))
{
CopyStream(e.Result, output);
}
其中CopyStream
是一种只复制数据的方法,例如
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[8 * 1024];
int read;
while((read = input.Read (buffer, 0, buffer.Length)) > 0)
{
output.Write (buffer, 0, read);
}
}