if ( File.Exists(file_name_str) )
{
try
{
cfg_file = new FileStream(file_name_str, FileMode.Open);
}
catch (Exception e)
{
if (cfg_file != null)
cfg_file.Close();
ThrowReadFailedError(ref file_name_str, "open cookie file failed");
return false;
}
}
这段代码抛文件不存在异常...震精了,,求助
https://msdn.microsoft.com/zh-cn/library/system.io.file.exists(v=vs.80).aspx
不应使用 Exists 方法来验证路径,此方法仅检查 path 中指定的文件是否存在。将无效路径传递到 Exists 将返回 false。
请注意,在您调用 Exists 方法和对文件执行其他操作(如 Delete)之间,其他进程可能会对文件进行一些处理。建议的编程做法是在 try...catch 块中包装 Exists 方法和对文件采取的操作,如示例中所示。这有助于缩小潜在冲突的范围。Exists 方法只能帮助确保文件是可用的,但无法保证。
允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录,请参见 GetCurrentDirectory。
如果 path 描述一个目录,则此方法返回 false。在确定文件是否存在之前,从 path 参数中移除尾随空格。
thank you。这文档让我熟悉了下File操作。
没进if块吧
异常是哪句代码爆出来的?
文件路径出问题,估计没找到绝对路径!最好if 前面加一个路径是否有效判断
按你的这个逻辑 无论文件怎么报错 抛出的异常都应该是这个啊
ThrowReadFailedError(ref file_name_str, "open cookie file failed");
这个报错提示语是后来我修改的。之前是在这里打印错误信息的,由于错误信息会打印每个玩家的路径,上传到服务器上的错误数太大,我就修改这个报错为统一报错了。
@空里: 然后还有就是你这段代码没加锁
如果并发量很大 容易出问题
这个问题已经fixed。是我们登陆账号大小写在游戏登陆验证后发生了变化(随机的),File.Exist这个函数在android机器上是否区分大小写取决于所使用的文件系统。
微软的API都是精确测试过的,行为稍微有点不一样的,会详细说明。CLR中的代码质量也还是可以的。
能遇到API的BUG,恭喜自己中大奖了。