前言
作为程序员,我们在读取或者写入文件时,经常会遇到写的相对路径有问题:明明文件就在那里,看的到,就是“摸不到”,很难受;然后将其写成绝对路径就解决了。一般时候,解决了就觉得万事大吉了,确实项目就没问题了,但是我们会有这样的疑问:相对路径不是指和运行文件相对的路径嘛,怎么会找不到?自己电脑没问题,为什么搁别人电脑就有问题了?
下面我将介绍一下为什么会出现这种情况,和其他路径 的意义。
理论说明
路径的含义
绝对路径:绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径;完整的描述文件位置的路径就是绝对路径。
相对路径:相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系,即是从当前路径开始的路径。
工作路径:也可叫当前路径,顾名思义,就是现在工作的路径,-_-||
启动路径:启动程序exe所在的路径
基础路径:是获取基目录,它由程序集冲突解决程序用来探测程序集,即程序集所在的路径。
补充:
程序集,经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为·dll或者是·exe的格式。
一般当前项目的基础路径和启动路径是相同的,如果是项目刚启动,那么当前路径,基础路径和启动路径是一样的。
相对路径有时候为什么找不动文件
从上面我们了解到:相对路径,相对的是工作路径(当前路径)。分析一下,在相对路径找不到东西,也就是工作路径变了,什么情况工作路径变了?当别的程序调用我们写的exe或dll时,工作路径就变成了别的程序的工作路径,这样相对路径不一样,自然就找不到。
所以,写程序时,一般情况下,不要写相对于工作路径的相对路径,这样很容易出错。我们可以写相对启动路径的相对路径,因为你的exe(或dll)就在那里,对你不离不弃。
代码说明(基于WinForm)
工作路径: System.Environment.CurrentDirectory;
基础路径:AppDomain.CurrentDomain.BaseDirectory;
启动路径:Application.StartupPath;
结束语
我现在开始写C#了,后面C#请多多指教,当然Qt,我也不想放弃。