Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinRT:关闭后再次打开以前打开的文件_C#_File_Windows 8_Windows Runtime_Windows 8.1 - Fatal编程技术网

C# WinRT:关闭后再次打开以前打开的文件

C# WinRT:关闭后再次打开以前打开的文件,c#,file,windows-8,windows-runtime,windows-8.1,C#,File,Windows 8,Windows Runtime,Windows 8.1,我有一个适用于Windows 8.1的简单书写应用程序,目前我正在扩展它,以包括选项卡。我还向这些选项卡添加了自动保存功能,这样当用户“关闭”应用程序时,它会将文件内容和路径(如果是现有文件)写入localstorage中的txt文件 当文件未保存时,这非常有效。用户关闭应用程序,在重新打开所有选项卡后,这些选项卡会再次出现,并显示最新的更改 我遇到的问题是当文件已经保存时。我将路径存储在txt中,所以我想在打开应用程序时再次打开该文件,但问题是我不允许打开系统上的任何文件。用户可能已经从他的C

我有一个适用于Windows 8.1的简单书写应用程序,目前我正在扩展它,以包括选项卡。我还向这些选项卡添加了自动保存功能,这样当用户“关闭”应用程序时,它会将文件内容和路径(如果是现有文件)写入localstorage中的txt文件

当文件未保存时,这非常有效。用户关闭应用程序,在重新打开所有选项卡后,这些选项卡会再次出现,并显示最新的更改

我遇到的问题是当文件已经保存时。我将路径存储在txt中,所以我想在打开应用程序时再次打开该文件,但问题是我不允许打开系统上的任何文件。用户可能已经从他的C:驱动器打开了一个我无法读取的文件(例如,如上所述)

我有没有办法解决这个问题。我担心我想做的事是不可能的


如果需要,我可以显示一些有关保存autosave文件的代码,但我认为我无法显示与问题相关的任何内容。

这是因为应用程序是沙盒,无法访问本地存储以外的其他存储区域,除非您通过打开的选择器进行用户交互

假设您将文件保存在
C:\
上。另外,将其保存在应用程序的
本地存储中。下次加载应用程序时,选项卡中将显示来自
本地存储的文本文件
-进行编辑,将其保存在电脑中的某个位置,并覆盖来自
本地存储的文件
。这样,您使用的文件实际上就是本地存储中的文件


在这里,你必须小心拿牌。如果您在
C:\
上保存
SampleFile.txt
,然后在
D:\
上创建另一个名为
SampleFile.txt的文件,当您在
LocalStorage
中复制该文件时,它应该与第一个文件不同。在这里,您必须制定自己的规则。

这是因为该应用程序是沙盒,无法访问本地存储以外的其他存储区域,除非您通过开放选择器参与用户交互

假设您将文件保存在
C:\
上。另外,将其保存在应用程序的
本地存储中。下次加载应用程序时,选项卡中将显示来自
本地存储的文本文件
-进行编辑,将其保存在电脑中的某个位置,并覆盖来自
本地存储的文件
。这样,您使用的文件实际上就是本地存储中的文件


在这里,你必须小心拿牌。如果您在
C:\
上保存
SampleFile.txt
,然后在
D:\
上创建另一个名为
SampleFile.txt的文件,当您在
LocalStorage
中复制该文件时,它应该与第一个文件不同。在这里,您必须制定自己的规则。

正如Vasile所说,一旦应用程序关闭,您将无法访问沙箱外部的存储文件


但是WinRT确实提供了一个类,您可以在其中存储对文件的权限。然后,您可以存储令牌,以备后续启动应用程序。

正如Vasile所说,一旦应用程序关闭,您将无法访问沙箱外部的存储文件


但是WinRT确实提供了一个类,您可以在其中存储对文件的权限。然后,您可以为后续的应用程序发布存储令牌。

谢谢Nigel,这正是我需要的!我现在将打开的文件添加到StorageApplicationPermissions类中的未来访问列表中,并为每个文件获取一个令牌。我将该令牌存储在自动保存文件中。当它重新打开时,我使用令牌再次请求文件。作为一个额外的奖励,它会跟踪文件是否移动了!我只是给了它令牌,它给了我文件,如果它仍然在一个可访问的位置。谢谢奈杰尔,这正是我需要的!我现在将打开的文件添加到StorageApplicationPermissions类中的未来访问列表中,并为每个文件获取一个令牌。我将该令牌存储在自动保存文件中。当它重新打开时,我使用令牌再次请求文件。作为一个额外的奖励,它会跟踪文件是否移动了!我只是给了它令牌,它会给我文件,如果它仍然在一个可访问的位置。谢谢你的帮助瓦西里。我为每个打开的文件分配一个唯一的id,并存储令牌(来自Nigels answer),因此不存储任何路径。这样可以避免重复的文件名。谢谢你的帮助。我为每个打开的文件分配一个唯一的id,并存储令牌(来自Nigels answer),因此不存储任何路径。这样可以避免重复的文件名。