整容说文库 > 程序代码 > 教育资讯

wp8 到底能用FileStream吗?MSDN的一句话好奇怪,求解读

来源:学生作业帮助网 编辑:整容说文库 时间:2021/01/19 07:44:12 程序代码
wp8 到底能用FileStream吗?MSDN的一句话好奇怪,求解读程序代码
因为我发现用winform的filestream保存图片,WP8 debug的时候正常运行,可是上传到应用商店后,再下载,运行时老闪退,经过多次观察,我感觉这是文件操作的问题(请求验证码就闪退,不请求就可以运行)。  FileStream aFile = new FileStream(loginInfo.UserName + "\\Info.txt", FileMode.Open);在MSDN上也有写此类型(Filestream)的存在是为了支持 windows phone 中的 .NET Compact Framework 基础结构,并不适用于应用程序代码。你们看是不是这个原因?
wp8肯定是支持FileStream的,闪退的原因可能是:
1,Stream未正常关闭。
2,文件不存在或路径不正确。

你的路径在本地与在商店时一致吗?
引用 1 楼 cuit 的回复:
wp8肯定是支持FileStream的,闪退的原因可能是:
1,Stream未正常关闭。
2,文件不存在或路径不正确。

你的路径在本地与在商店时一致吗?
文件流是关闭的,我的路径是相对路径,跟程序一个文件夹
引用 2 楼 wlmnzf 的回复:
Quote: 引用 1 楼 cuit 的回复:

wp8肯定是支持FileStream的,闪退的原因可能是:
1,Stream未正常关闭。
2,文件不存在或路径不正确。

你的路径在本地与在商店时一致吗?
文件流是关闭的,我的路径是相对路径,跟程序一个文件夹

在用System.IO命名空间下的File时用绝对路径 ,如
FileStream fs=File.Open(ApplicationData.Current.LocalFolder.Path+相对路径, FileMode.Open, FileAccess.Read, FileShare.Read)
引用 3 楼 NianHui 的回复:
Quote: 引用 2 楼 wlmnzf 的回复:

Quote: 引用 1 楼 cuit 的回复:

wp8肯定是支持FileStream的,闪退的原因可能是:
1,Stream未正常关闭。
2,文件不存在或路径不正确。

你的路径在本地与在商店时一致吗?
文件流是关闭的,我的路径是相对路径,跟程序一个文件夹

在用System.IO命名空间下的File时用绝对路径 ,如
FileStream fs=File.Open(ApplicationData.Current.LocalFolder.Path+相对路径, FileMode.Open, FileAccess.Read, FileShare.Read)

我试试,对了msdn上说FileStream支持wp8,和wp7,没提及8.1,会不会跟这个也有关系
老实说,你把这个功能封装到单独的类里面了把。貌似“偶尔”,偶尔哦。如果不放到codebehind里面。会报一个错。就是读写权限之类的错误。或者对象丢失的错误。这个错误不是必发生的。真的是偶尔。我不知道为什么。后来把I/O放到codebehind后,基本就全部消失了。希望这个对你有帮助。
引用 4 楼 wlmnzf 的回复:
Quote: 引用 3 楼 NianHui 的回复:

Quote: 引用 2 楼 wlmnzf 的回复:

Quote: 引用 1 楼 cuit 的回复:

wp8肯定是支持FileStream的,闪退的原因可能是:
1,Stream未正常关闭。
2,文件不存在或路径不正确。

你的路径在本地与在商店时一致吗?
文件流是关闭的,我的路径是相对路径,跟程序一个文件夹

在用System.IO命名空间下的File时用绝对路径 ,如
FileStream fs=File.Open(ApplicationData.Current.LocalFolder.Path+相对路径, FileMode.Open, FileAccess.Read, FileShare.Read)

我试试,对了msdn上说FileStream支持wp8,和wp7,没提及8.1,会不会跟这个也有关系

基于windows runtime的wp8.1吗?如果是那么很有可能是不兼容了。
如果是基于sliverlight的wp8.1肯定会兼容的。
引用 6 楼 NianHui 的回复:
Quote: 引用 4 楼 wlmnzf 的回复:

Quote: 引用 3 楼 NianHui 的回复:

Quote: 引用 2 楼 wlmnzf 的回复:

Quote: 引用 1 楼 cuit 的回复:

wp8肯定是支持FileStream的,闪退的原因可能是:
1,Stream未正常关闭。
2,文件不存在或路径不正确。

你的路径在本地与在商店时一致吗?
文件流是关闭的,我的路径是相对路径,跟程序一个文件夹

在用System.IO命名空间下的File时用绝对路径 ,如
FileStream fs=File.Open(ApplicationData.Current.LocalFolder.Path+相对路径, FileMode.Open, FileAccess.Read, FileShare.Read)

我试试,对了msdn上说FileStream支持wp8,和wp7,没提及8.1,会不会跟这个也有关系

基于windows runtime的wp8.1吗?如果是那么很有可能是不兼容了。
如果是基于sliverlight的wp8.1肯定会兼容的。

=_=||好高端,我觉得还是用独立储存比较靠谱
引用 5 楼 stuart 的回复:
老实说,你把这个功能封装到单独的类里面了把。貌似“偶尔”,偶尔哦。如果不放到codebehind里面。会报一个错。就是读写权限之类的错误。或者对象丢失的错误。这个错误不是必发生的。真的是偶尔。我不知道为什么。后来把I/O放到codebehind后,基本就全部消失了。希望这个对你有帮助。
我也觉得可能是权限问题,要不然不会是release的时候没什么问题,弄到应用商店以后就老是出问题
引用 6 楼 NianHui 的回复:
Quote: 引用 4 楼 wlmnzf 的回复:

Quote: 引用 3 楼 NianHui 的回复:

Quote: 引用 2 楼 wlmnzf 的回复:

Quote: 引用 1 楼 cuit 的回复:

wp8肯定是支持FileStream的,闪退的原因可能是:
1,Stream未正常关闭。
2,文件不存在或路径不正确。

你的路径在本地与在商店时一致吗?
文件流是关闭的,我的路径是相对路径,跟程序一个文件夹

在用System.IO命名空间下的File时用绝对路径 ,如
FileStream fs=File.Open(ApplicationData.Current.LocalFolder.Path+相对路径, FileMode.Open, FileAccess.Read, FileShare.Read)

我试试,对了msdn上说FileStream支持wp8,和wp7,没提及8.1,会不会跟这个也有关系

基于windows runtime的wp8.1吗?如果是那么很有可能是不兼容了。
如果是基于sliverlight的wp8.1肯定会兼容的。

我加了几个try,终于捕捉到了异常,发现是权限问题,是否用独立储存就不会发生这种问题了?
难道你写的不是独立存储???异常是什么,详细信息贴出来看看。
引用 8 楼 wlmnzf 的回复:
Quote: 引用 5 楼 stuart 的回复:

老实说,你把这个功能封装到单独的类里面了把。貌似“偶尔”,偶尔哦。如果不放到codebehind里面。会报一个错。就是读写权限之类的错误。或者对象丢失的错误。这个错误不是必发生的。真的是偶尔。我不知道为什么。后来把I/O放到codebehind后,基本就全部消失了。希望这个对你有帮助。
我也觉得可能是权限问题,要不然不会是release的时候没什么问题,弄到应用商店以后就老是出问题

按照文档你的权限应该是绝对正确的。最郁闷的是,这个程序偶尔还是能正常运行的。我觉得这个可能是一个bug。但是我们无法给出bug的详细描述,应该让更专业的人来看看。
引用 10 楼 NianHui 的回复:
难道你写的不是独立存储???异常是什么,详细信息贴出来看看。

亲爱的版主,您好!
我也碰到过这样类似的问题。比如,我要写某个文件,绝对在文档允许的权限类。我Catch不到错误。他会运行完Catch后,报一个文件读写权限之类的错误。或者对象丢失错误。而且最可恨的是,一会儿又可能过了。在另外一个文件的位置报类似的错误。但是我将读写文件的代码放到x.xaml.cs文件之后,所有的问题都没有了。
很抱歉我把问题说的很含糊。但是现在真心碰不到了。
谅解,非常感谢。
引用 12 楼 stuart 的回复:
Quote: 引用 10 楼 NianHui 的回复:

难道你写的不是独立存储???异常是什么,详细信息贴出来看看。

亲爱的版主,您好!
我也碰到过这样类似的问题。比如,我要写某个文件,绝对在文档允许的权限类。我Catch不到错误。他会运行完Catch后,报一个文件读写权限之类的错误。或者对象丢失错误。而且最可恨的是,一会儿又可能过了。在另外一个文件的位置报类似的错误。但是我将读写文件的代码放到x.xaml.cs文件之后,所有的问题都没有了。
很抱歉我把问题说的很含糊。但是现在真心碰不到了。
谅解,非常感谢。

我猜测你的问题可能是文件资源争夺问题,但也说不准。建议你把捕获到的异常堆栈保存起来,可以分析研究一下。
引用 12 楼 stuart 的回复:
Quote: 引用 10 楼 NianHui 的回复:

难道你写的不是独立存储???异常是什么,详细信息贴出来看看。

亲爱的版主,您好!
我也碰到过这样类似的问题。比如,我要写某个文件,绝对在文档允许的权限类。我Catch不到错误。他会运行完Catch后,报一个文件读写权限之类的错误。或者对象丢失错误。而且最可恨的是,一会儿又可能过了。在另外一个文件的位置报类似的错误。但是我将读写文件的代码放到x.xaml.cs文件之后,所有的问题都没有了。
很抱歉我把问题说的很含糊。但是现在真心碰不到了。
谅解,非常感谢。

没关系,知道原因了就可以有解决的方案
引用 10 楼 NianHui 的回复:
难道你写的不是独立存储???异常是什么,详细信息贴出来看看。

嗯,直接FileStream了,异常是Access to the path '....' is denied
引用 15 楼 wlmnzf 的回复:
Quote: 引用 10 楼 NianHui 的回复:

难道你写的不是独立存储???异常是什么,详细信息贴出来看看。

嗯,直接FileStream了,异常是Access to the path '....' is denied


详细点,,,就这几个字符太少了。
引用 15 楼 wlmnzf 的回复:
Quote: 引用 10 楼 NianHui 的回复:

难道你写的不是独立存储???异常是什么,详细信息贴出来看看。

嗯,直接FileStream了,异常是Access to the path '....' is denied

猜测是因为你用的相对路径引起的,这个FileStream是可以用的,但是用的范围仅仅局限于独立存储文件夹内的操作,出了这个文件夹范围是无权访问的。我在3楼给你说的用System.IO命名空间下的File时要用绝对路径就是这个原因。
引用 17 楼 NianHui 的回复:
Quote: 引用 15 楼 wlmnzf 的回复:

Quote: 引用 10 楼 NianHui 的回复:

难道你写的不是独立存储???异常是什么,详细信息贴出来看看。

嗯,直接FileStream了,异常是Access to the path '....' is denied

猜测是因为你用的相对路径引起的,这个FileStream是可以用的,但是用的范围仅仅局限于独立存储文件夹内的操作,出了这个文件夹范围是无权访问的。我在3楼给你说的用System.IO命名空间下的File时要用绝对路径就是这个原因。
因为如果它不限制在这个文件夹下的话,这个API就能绕过独立存储来访问任何文件了,系统的、其他应用的,这是绝对不允许的,故而仅限与独立存储文件夹下,它和独立存储的IO相关API是一样的效果,只是提供这么两套API而已。或许你的错误是访问了独立存储之外的文件了?
引用 18 楼 NianHui 的回复:
Quote: 引用 17 楼 NianHui 的回复:

Quote: 引用 15 楼 wlmnzf 的回复:

Quote: 引用 10 楼 NianHui 的回复:

难道你写的不是独立存储???异常是什么,详细信息贴出来看看。

嗯,直接FileStream了,异常是Access to the path '....' is denied

猜测是因为你用的相对路径引起的,这个FileStream是可以用的,但是用的范围仅仅局限于独立存储文件夹内的操作,出了这个文件夹范围是无权访问的。我在3楼给你说的用System.IO命名空间下的File时要用绝对路径就是这个原因。
因为如果它不限制在这个文件夹下的话,这个API就能绕过独立存储来访问任何文件了,系统的、其他应用的,这是绝对不允许的,故而仅限与独立存储文件夹下,它和独立存储的IO相关API是一样的效果,只是提供这么两套API而已。或许你的错误是访问了独立存储之外的文件了?

嗯,了解了,刚改成了独立储存,这次应该可以了,谢谢
程序代码