获取程序工作路径的方法
(作者:段炼 2000年10月08日 10:32)
我们知道,应用程序完成诸如文件读写这样的功能时通常需要先取得应用程序的当前工作路径,而不同用户系统中程序安装路径往往各异。因此,获取程序工作路径的方法在实际编程中是很有用的,不同的编程语言对此提供了不同的方法。
Visual Basic(VB)
VB中通过App关键字来实现的对程序全局对象的访问,App对象的Path属性直接指出了应用程序的工作路径。
例如,下面的代码实现在程序运行中PictureBox控件动态加载位于工作目录的image子目录下的图像文件picture1.gif :
FilePosition = App.Path & "/image/picture1.gif"
Picture1.Picture = LoadPicture(FilePosition)
Visual C++ (VC)
MFC似乎并没有直接提供取得应用程序工作路径的方法,但在VC中可以简单使用C语言中的getcwd函数(在<direct.h>中说明)来取工作路径。
例如:
char buffer[_MAX_PATH];
if(_getcwd(buffer,_MAX_PATH)==NULL)
cout<< "_getcwd error"<<"/n";
else
cout<<buffer<<"/n";
输出为工作路径:
E:/PathInfo/Debug
Delphi
在Delphi中,调用函数ParamStr(0)可以取得可执行文件的完整路径信息(工作路径加可执行文件名),再调用ExtractFileDir或ExtractFilePath函数即可提取出应用程序工作目录或路径。例如:
label1.caption:=ExtractFileDir(ParamStr(0));
label2.caption:=ExtractFilePath(ParamStr(0));
其显示结果分别为:
E:/PathInfo
E:/PathInfo/
C++Builder(BCB)
C++Builder完全兼容ANSI C、C++,因而同VC一样,我们也可以调用C语言中的getcwd函数来取工作路径。此外,BCB语言还提供了如ParamStr()、ExtractFilePath等与Delphi一致的函数,我们只需将Delphi中的"."改为BCB中的"->"即可同样使用。例如,在Label1中显示工作路径:
Label1->Caption=ExtractFilePath(ParamStr(0));
需注意的只是BCB区别大小写而Delphi不区别大小写。
Java (JDK、VJ++、JBuilder等)
在跨平台语言Java中,有关Application的全局信息放置在一个Properties(Hashtable类的一个子类)对象中,键"user.dir"所对应的值即工作路径。通过System.getProperty("user.dir")即可取得Application工作路径字符串。
例如:
public class Class1
{
public static void main (String[] args)
{
System.out.println(System.getProperty("user.dir") );
}
}
控制台输出:
E:/PathInfo
(作者:段炼 2000年10月08日 10:32)
我们知道,应用程序完成诸如文件读写这样的功能时通常需要先取得应用程序的当前工作路径,而不同用户系统中程序安装路径往往各异。因此,获取程序工作路径的方法在实际编程中是很有用的,不同的编程语言对此提供了不同的方法。
Visual Basic(VB)
VB中通过App关键字来实现的对程序全局对象的访问,App对象的Path属性直接指出了应用程序的工作路径。
例如,下面的代码实现在程序运行中PictureBox控件动态加载位于工作目录的image子目录下的图像文件picture1.gif :
FilePosition = App.Path & "/image/picture1.gif"
Picture1.Picture = LoadPicture(FilePosition)
Visual C++ (VC)
MFC似乎并没有直接提供取得应用程序工作路径的方法,但在VC中可以简单使用C语言中的getcwd函数(在<direct.h>中说明)来取工作路径。
例如:
char buffer[_MAX_PATH];
if(_getcwd(buffer,_MAX_PATH)==NULL)
cout<< "_getcwd error"<<"/n";
else
cout<<buffer<<"/n";
输出为工作路径:
E:/PathInfo/Debug
Delphi
在Delphi中,调用函数ParamStr(0)可以取得可执行文件的完整路径信息(工作路径加可执行文件名),再调用ExtractFileDir或ExtractFilePath函数即可提取出应用程序工作目录或路径。例如:
label1.caption:=ExtractFileDir(ParamStr(0));
label2.caption:=ExtractFilePath(ParamStr(0));
其显示结果分别为:
E:/PathInfo
E:/PathInfo/
C++Builder(BCB)
C++Builder完全兼容ANSI C、C++,因而同VC一样,我们也可以调用C语言中的getcwd函数来取工作路径。此外,BCB语言还提供了如ParamStr()、ExtractFilePath等与Delphi一致的函数,我们只需将Delphi中的"."改为BCB中的"->"即可同样使用。例如,在Label1中显示工作路径:
Label1->Caption=ExtractFilePath(ParamStr(0));
需注意的只是BCB区别大小写而Delphi不区别大小写。
Java (JDK、VJ++、JBuilder等)
在跨平台语言Java中,有关Application的全局信息放置在一个Properties(Hashtable类的一个子类)对象中,键"user.dir"所对应的值即工作路径。通过System.getProperty("user.dir")即可取得Application工作路径字符串。
例如:
public class Class1
{
public static void main (String[] args)
{
System.out.println(System.getProperty("user.dir") );
}
}
控制台输出:
E:/PathInfo