我希望用来自web的文本文件替换以IsolatedStorageFile形式存在的文本文件。
var store = IsolatedStorageFile.GetUserStoreForApplication()
IsolatedStorageFileStream rootFile = store.CreateFile("InTheRoot.txt");
IsolatedStorageFile.CopyFile(rootFile, "http://example.com/test.txt" , true);
这里有什么错误?谢谢。
发布于 2014-03-02 14:23:42
您不能使用IsolatedStorageFile.CopyFile()从internet下载文件。
快速和肮脏的方法是使用隐藏的WebBrowser控件:
XAML
<phone:WebBrowser x:Name="Browser" Navigated="Browser_Navigated" Visibility="Collapsed"></phone:WebBrowser>
<TextBlock x:Name="Text"></TextBlock>
C#
public MainPage()
{
InitializeComponent();
Browser.Navigate(new Uri("http://example.com/test.txt"));
}
private void Browser_Navigated(object sender, NavigationEventArgs e)
{
var store = IsolatedStorageFile.GetUserStoreForApplication();
var filename = "InTheRoot.txt";
if (store.FileExists(filename)) store.DeleteFile(filename);
using (var stream = store.CreateFile(filename))
{
using (var writer = new StreamWriter(stream))
{
writer.Write(Browser.SaveToString());
}
}
using (var file = store.OpenFile(filename, FileMode.Open))
{
using(var reader = new StreamReader(file))
{
Text.Text = reader.ReadToEnd();
}
}
}
这方面的主要问题是,它将文本文件内容封装在元素中。
这并不是真正的推荐,但它将使您启动和运行。
从web检索内容的更好方法是使用BackgroundTransferRequest作为详细的这里和这里。
发布于 2014-03-02 14:02:53
更改这一行:
IsolatedStorageFile.CopyFile(rootFile, "http://example.com/test.txt" , true);
对此:
store.CopyFile("InTheRoot.txt", "http://example.com/test.txt" , true);
这将修复“非静态字段、方法或属性所需的对象引用”错误,而下一个错误“不能从'System.IO.IsolatedStorage.IsolatedStorageFileStream‘转换为'string'”。因为第一个参数的预期类型是string
而不是IsolatedStorageFileStream
。
[供参考]
https://stackoverflow.com/questions/22128093
复制相似问题