我们在开发程序时,常常需要操作相关的文件。操作文件一般有两种方法:绝对路径和相对路径。绝对路径是从盘符开始的,相对路径则是相对于当前目录。
绝对路径很简单,一般也不会出错,但是在实际开发过程中要慎用绝对路径,因为这样会导致程序的可移植性较差。但是在我个人却遇到了好几次相对路径不起作用的情况,只有换成绝对路径才生效。我个人调试了好久才找到了原因。
相对路径不起作用只有两种情况:
- 相对路径的写法出错了。
- 系统默认的当前目录被更改了。
关于第二种情况可能会有人产生疑问,系统默认的当前目录还能更改?
导致系统默认的当前目录被更改的原因很多,例如在Windows操作系统上,当用文件对话框成功打开一个文件后,当前目录就被修改为被打开的文件所在目录。(VC++6.0已经验证,其他版本未知)我个人感觉这是一个bug,希望微软能够解决。还有环境变量也有可能会导致系统默认的当前目录被更改。
Windows系统可以利用GetCurrentDirectory()这个函数可以获得当前目录。
实际上有一个折中的办法可以解决上述办法,通过函数获取系统默认的当前目录,然后再加上相对路径,这种写法是非常保险的。