积极答复者
【File.Exists()】为什么文件确实存在但 Exists() 方法返回 false?

问题
答案
-
可以这样理解。
我们经常在XAML中用ms-appdata这种形式去定位文件,而ms-appdata:///temp/这种形式其实是一种访问协议。
XAML的代码解析过程中,会解析这个协议,访问到temp协议对应的路径。而在C#代码的File.Exists方法中,参数要求是绝对路径,就像你上面提到的,它是不能正确解析协议的。
希望我的答案能帮助更多的人。
- 已标记为答案 CodingNinja10 2015年9月25日 7:42
全部回复
-
嗯,但这衍生出另一个问题,
string path = Path.Combine(ApplicationData.Current.TemporaryFolder.Path, "***.txt");
获取的地址是这个:
"C:\\Users\\MyName\\AppData\\Local\\Packages\\5d40d80a-xxxx-xxxx-xxxx-efd339ad5614_pmc9e0yzdvsd2\\TempState\\xxx.txt"
File.Exists(path);
能正确判断了!
但我们知道 WP8/8.1/10 都是可以用形如:
“ms-appx:///”
“ms-appdata://local/”
“ms-appdata:///roaming/”
“ms-appdata:///temp/”
的地址格式的,而我也需要用这一格式。
用“ms-xxx”这一种格式之所以无法判断文件存在,我的猜想是:
File.Exists(path);
方法无法使用这一格式,“ms-xxx”这一格式只是一个“简写”,而不是真实地址。Exits() 方法是需要正常的、真实的地址。
我的猜想正确吗?
-
可以这样理解。
我们经常在XAML中用ms-appdata这种形式去定位文件,而ms-appdata:///temp/这种形式其实是一种访问协议。
XAML的代码解析过程中,会解析这个协议,访问到temp协议对应的路径。而在C#代码的File.Exists方法中,参数要求是绝对路径,就像你上面提到的,它是不能正确解析协议的。
希望我的答案能帮助更多的人。
- 已标记为答案 CodingNinja10 2015年9月25日 7:42