C#关于文件路径的问题

tei333 2018-07-09 04:57:50

功能就是传入路径,然后确认路径存在就打开这个文件。我现在遇到一个情况,就是传入的路径,单从字符串的信息来看,是绝对存在的,但是这里条件判断始终判断为路径不存在,然后我试过调试时修改了path的值,仅仅只是把双引号删除后在重新添加回来,再继续调试,这时条件判断就判断为能获取到该路径。这时什么原因呢,小弟非常不解,希望哪位大神能给我解释一下
...全文
717 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42584046 2018-07-15
  • 打赏
  • 举报
回复
编码问题 哈哈
  • 打赏
  • 举报
回复
引用 15 楼 tei333 的回复:
[quote=引用 14 楼 xomix 的回复:]
[quote=引用 13 楼 tei333 的回复:]
[quote=引用 12 楼 xomix 的回复:]
字符utf编码:\ufeff

嗯,没错,用UTF8转换的时候发现,是编码的时候前面多了三个字节,但是我查了一下BOM头是EF BB BF,而我这个是E2 80 AA,你知道这是什么原因吗?路径也不是别人传的,是我自己右键文件-属性-安全,复制里面的对象名称对应的路径。用这种方式传一个路径就没问题,有两个路径的时候我就用逗号隔开了,这种时候很容易就发生这种情况,请问你知道发生这种情况的原因吗?[/quote]Utf-8编码文件的Bom头,也就是你保存的文件如果是utf-8编码带bom头的时候就会在文件头部自动增加这个字符,这就是这种方式保存文件的标准。[/quote]
嗯,这个我理解了,我想问的是我多的字节好像不是BOM头吧,它的16进制显示的是E2 80 AA,不是BOM头EF BB BF,这个你清楚原因吗?[/quote]你制作的文件,来历我说不清的,我又没有生成文件的代码。
tei333 2018-07-10
  • 打赏
  • 举报
回复
引用 14 楼 xomix 的回复:
[quote=引用 13 楼 tei333 的回复:]
[quote=引用 12 楼 xomix 的回复:]
字符utf编码:\ufeff

嗯,没错,用UTF8转换的时候发现,是编码的时候前面多了三个字节,但是我查了一下BOM头是EF BB BF,而我这个是E2 80 AA,你知道这是什么原因吗?路径也不是别人传的,是我自己右键文件-属性-安全,复制里面的对象名称对应的路径。用这种方式传一个路径就没问题,有两个路径的时候我就用逗号隔开了,这种时候很容易就发生这种情况,请问你知道发生这种情况的原因吗?[/quote]Utf-8编码文件的Bom头,也就是你保存的文件如果是utf-8编码带bom头的时候就会在文件头部自动增加这个字符,这就是这种方式保存文件的标准。[/quote]
嗯,这个我理解了,我想问的是我多的字节好像不是BOM头吧,它的16进制显示的是E2 80 AA,不是BOM头EF BB BF,这个你清楚原因吗?
  • 打赏
  • 举报
回复
引用 13 楼 tei333 的回复:
[quote=引用 12 楼 xomix 的回复:]
字符utf编码:\ufeff

嗯,没错,用UTF8转换的时候发现,是编码的时候前面多了三个字节,但是我查了一下BOM头是EF BB BF,而我这个是E2 80 AA,你知道这是什么原因吗?路径也不是别人传的,是我自己右键文件-属性-安全,复制里面的对象名称对应的路径。用这种方式传一个路径就没问题,有两个路径的时候我就用逗号隔开了,这种时候很容易就发生这种情况,请问你知道发生这种情况的原因吗?[/quote]Utf-8编码文件的Bom头,也就是你保存的文件如果是utf-8编码带bom头的时候就会在文件头部自动增加这个字符,这就是这种方式保存文件的标准。
tei333 2018-07-10
  • 打赏
  • 举报
回复
引用 12 楼 xomix 的回复:
字符utf编码:\ufeff

嗯,没错,用UTF8转换的时候发现,是编码的时候前面多了三个字节,但是我查了一下BOM头是EF BB BF,而我这个是E2 80 AA,你知道这是什么原因吗?路径也不是别人传的,是我自己右键文件-属性-安全,复制里面的对象名称对应的路径。用这种方式传一个路径就没问题,有两个路径的时候我就用逗号隔开了,这种时候很容易就发生这种情况,请问你知道发生这种情况的原因吗?
  • 打赏
  • 举报
回复
字符utf编码:\ufeff
  • 打赏
  • 举报
回复
引用 9 楼 tei333 的回复:
我找到问题了,我把字符串用ASCII的编码方式转为字节数组后,发现多了一个字节,就是第一个字节的ascii码的十进制为63,我查了一下是‘?’。不过这个字符为什么在字符串里没有显示出来,我也不知道~
Utf-8的Bom头,给你文件列表的人没去掉,你可以自己去掉也可以让他去掉
xian_wwq 2018-07-10
  • 打赏
  • 举报
回复
查文本最好用Ultraedit之类的工具,
这样能发现多余的不能显示的字符
tei333 2018-07-10
  • 打赏
  • 举报
回复
引用 16 楼 xomix 的回复:
[quote=引用 15 楼 tei333 的回复:]
[quote=引用 14 楼 xomix 的回复:]
[quote=引用 13 楼 tei333 的回复:]
[quote=引用 12 楼 xomix 的回复:]
字符utf编码:\ufeff

嗯,没错,用UTF8转换的时候发现,是编码的时候前面多了三个字节,但是我查了一下BOM头是EF BB BF,而我这个是E2 80 AA,你知道这是什么原因吗?路径也不是别人传的,是我自己右键文件-属性-安全,复制里面的对象名称对应的路径。用这种方式传一个路径就没问题,有两个路径的时候我就用逗号隔开了,这种时候很容易就发生这种情况,请问你知道发生这种情况的原因吗?[/quote]Utf-8编码文件的Bom头,也就是你保存的文件如果是utf-8编码带bom头的时候就会在文件头部自动增加这个字符,这就是这种方式保存文件的标准。[/quote]
嗯,这个我理解了,我想问的是我多的字节好像不是BOM头吧,它的16进制显示的是E2 80 AA,不是BOM头EF BB BF,这个你清楚原因吗?[/quote]你制作的文件,来历我说不清的,我又没有生成文件的代码。[/quote]
好吧 还是谢谢了
tei333 2018-07-09
  • 打赏
  • 举报
回复
我找到问题了,我把字符串用ASCII的编码方式转为字节数组后,发现多了一个字节,就是第一个字节的ascii码的十进制为63,我查了一下是‘?’。不过这个字符为什么在字符串里没有显示出来,我也不知道~
tei333 2018-07-09
  • 打赏
  • 举报
回复
引用 6 楼 wddw1986 的回复:
用户,权限
从这两方面考虑吧,普通的路径不会有这种问题


引用 7 楼 wanghui0380 的回复:
ActionResult 好吧webapi或者什么mvc

跑在iis底下的玩意,默认没有权限去访问桌面文件的和执行文件的


如果是一直访问不了,我还能理解,关键是我修改字符串后再改回和原来一样的信息,就能正常访问了,而且改的信息还不是路径信息,只是改了那个双引号,删了再加回来,就能正常访问了,这个情况我就很不理解了
wanghui0380 2018-07-09
  • 打赏
  • 举报
回复
ActionResult 好吧webapi或者什么mvc

跑在iis底下的玩意,默认没有权限去访问桌面文件的和执行文件的
cheng2005 2018-07-09
  • 打赏
  • 举报
回复
用户,权限
从这两方面考虑吧,普通的路径不会有这种问题
tei333 2018-07-09
  • 打赏
  • 举报
回复
引用 3 楼 wddw1986 的回复:
把你的路径指放到资源管理器中打开看看,谁知道你给的值里有没有错误,动手试过才知道

我把字符串复制到文件管理器的路径栏里删除多余的斜杠后,是可以正确打开的
tei333 2018-07-09
  • 打赏
  • 举报
回复
这个双引号不是作为文件名的信息出现的,就是string类型的value值会用双引号包括起来的这个双引号
cheng2005 2018-07-09
  • 打赏
  • 举报
回复
把你的路径指放到资源管理器中打开看看,谁知道你给的值里有没有错误,动手试过才知道
  • 打赏
  • 举报
回复


你最好确认一下有双引号吗?
wanghui0380 2018-07-09
  • 打赏
  • 举报
回复
双引号??

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧