我有一行代码可以创建IsolatedStorageFile
对象。
IsolatedStorageFile isoFile = IsolatedStorageFile.GetStore(
IsolatedStorageScope.Roaming
| IsolatedStorageScope.User
| IsolatedStorageScope.Assembly,
null, null);
它很好用,并且可以按照我的要求在执行之间保留数据,但是当我将exe
移动到其他文件夹时,它不会收到相同的存储位置。我可以将exe
移回原始文件夹,所有数据都可以再次使用。
如何初始化IsolatedStoreFile
,以便无论exe
位于哪个文件夹,它始终都会获得相同的存储位置?
更新:在此.GetStore
的{{3}}中指出
null 让IsolatedStorage对象选择证据。
显然,null
使用exe
的网址作为证据
我如何强迫它使用其他东西?
以下是我过去常常了解的文章:documentation
答案 0 :(得分:1)
您可以存储隔离存储文件的路径。
使用下面的代码,我创建了一个包含文本的文件,然后将其读回。 然后,我硬编码'文件到代码的路径(仅用于演示目的!)。
我移动了exe并运行它。我点击了分配了硬编码路径的按钮,并且能够读取文件。
这很丑陋但是有效。
string path;
private void button1_Click(object sender, EventArgs e)
{
// Create a file in isolated storage.
IsolatedStorageFile store = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
IsolatedStorageFileStream stream = new IsolatedStorageFileStream("test.txt", FileMode.Create, store);
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine("Hello");
writer.Close();
stream.Close();
// Retrieve the actual path of the file using reflection.
path = stream.GetType().GetField("m_FullPath", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(stream).ToString();
MessageBox.Show("Created File:" + path);
}
private void button3_Click(object sender, EventArgs e)
{
// Hardcoded? Yech, You should store this info somewhere
path = @"C:\Users\xxxxxx\AppData\Local\IsolatedStorage\xzzzo1dc.wni\4xhaqngq.5jl\Url.snvxh15wown3vm2muv25oq55wafnfhxw\AssemFiles\test.txt";
}
private void button2_Click(object sender, EventArgs e)
{
String Text = File.ReadAllText(path);
MessageBox.Show("read storage: " + Text);
}
答案 1 :(得分:-1)
创建exe
的快捷方式,然后移动 。