启动应用程序时,将执行文本文件的更新检查。如果远程文件的版本号高于本地版本号,则远程文件应保存到隔离存储器并替换当前存储器。不幸的是,它没有按预期工作。存储中仍然存在旧文件。
public static bool WriteFileToIsolatedStorage(String content, String fileName)
{
bool result = false;
MessageBox.Show(Leser.GetVersionInfo(content));
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
StreamWriter writer = new StreamWriter(new IsolatedStorageFileStream(fileName, FileMode.Truncate, store));
try
{
writer.Write(content);
writer.Flush();
writer.Close();
result = true;
}
catch
{
result = false;
}
return result;
}
我尝试了几个FileMode参数,如“Create”或“Truncate”,但是当重新启动应用程序时,总会有可用的更新。写入存储时没有错误,但版本号表示它无法正常工作。
我的项目资源管理器中有一个文本文件,其中包含应如上所述更新的数据。在开始时,我检查该文件的存储空间,如果没有找到,它将被写入该文件。这按预期工作。但更新版本没有写,我不知道为什么不。
解决方案:写得很好:)问题是我读了ressource文件而不是保存到IsolatedStorage的文件
public static String ReadFileContents(String file)
{
String content = String.Empty;
var ResourceStream = Application.GetResourceStream(new Uri(file, UriKind.Relative));
if (ResourceStream != null)
{
Stream myFileStream = ResourceStream.Stream;
if (myFileStream.CanRead)
{
StreamReader myStreamReader = new StreamReader(myFileStream);
content = myStreamReader.ReadToEnd();
}
}
return content;
}
对不起伙计们!
答案 0 :(得分:1)
以下是我用来创建文件并替换它的代码....只需更改关键字Truncate to Create
即可。
public static bool WriteFileToIsolatedStorage(String content, String fileName)
{
bool result = false;
//MessageBox.Show(Leser.GetVersionInfo(content));
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
StreamWriter writer = new StreamWriter(new IsolatedStorageFileStream(fileName, FileMode.Create, store));
try
{
writer.Write(content);
writer.Flush();
writer.Close();
result = true;
}
catch
{
result = false;
}
StreamReader reader = new StreamReader(new IsolatedStorageFileStream(fileName, FileMode.Open, store));
string rawData = reader.ReadToEnd();
reader.Close();
return result;
}
我使用流阅读器来验证它是否被替换:)
答案 1 :(得分:0)
我没有看到您的代码有任何明显错误,但请尝试以下方法:
public static bool WriteFileToIsolatedStorage(String content, String fileName)
{
bool result = false;
MessageBox.Show(Leser.GetVersionInfo(content));
try
{
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileName, FileMode.Truncate, store))
using (StreamWriter writer = new StreamWriter(stream))
{
writer.Write(content);
result = true;
}
}
catch
{
result = false;
}
return result;
}
处理你实例化它的任何东西不仅是一个好主意,还应该确保所有内容都被刷新和关闭(即使这可能隐含在StreamWriter中,所以这在黑暗中是一个镜头)