今天踩到一个坑,记录一下
在Linux系统里面,路径名是可以以点号结尾的。
mkdir /tmp/path.
这个路径path.
最后的点号和正常其它字符一样。
但是在windows系统里面,这个路径是不允许的,这没什么,遗憾的是windows并不报错,而是直接忽略
,这就把我肯惨了。
例如,测试命令:
mkdir C:/tmp/path
mkdir C:/tmp/path.
这两个命令输出同样的结果,即创建目录c:/tmp/path
,后面写法的点号(.)直接被忽视。
而如果使用C语言访问:
FILE * f = fopen( "c:\\temp\\path\\test.log", "a+" );
FILE * f = fopen( "c:\\temp\\path.\\test.log", "a+" );
这两个语句输出同样的效果,即打开文件"c:\temp\path\test.log";在我们的例子中,fopen的文件名字符串是拼接出来的,所以在拼接的过程中存在对点号的使用不当,导致在linux平台和windows平台行为不兼容的问题。
好吧,反正记录下来,windows平台路径名不支持以点号结尾,其处理方式是直接忽视,并不报错。
网友评论