【发布时间】:2013-12-21 16:25:15
【问题描述】:
我正在制作一个程序,在我的闪存驱动器和两台计算机之间同步文件,但是根据闪存驱动器插入的计算机,它是驱动器 G 或 E。 如何让我的计算机识别它正在运行的计算机?
【问题讨论】:
-
您为什么不简单地告诉您的程序,并通过将其写入某处(例如,在文件中)让它记住它?或者提供你的程序在启动时读取的属性文件?
我正在制作一个程序,在我的闪存驱动器和两台计算机之间同步文件,但是根据闪存驱动器插入的计算机,它是驱动器 G 或 E。 如何让我的计算机识别它正在运行的计算机?
【问题讨论】:
您可以在 java 中使用系统属性。例如,您可以很好地使程序识别计算机
//gives the user name
System.getProperty("user.name");
//gives the host name or textual representation of ip address
java.net.InetAddress.getLocalHost();
获得系统信息后,您可以选择驱动器G:或E:
另一种选择是设置一个用户定义的环境变量,表示驱动器名称,如FLASH_DRIVE,其值(G: 或E:)。您可以在运行代码时使用 -D 选项简单地发送此属性。说 java -DFLASH_DRIVE yourprogram 并使用
System.getProperty("FLASH_DRIVE");
有很多方法可以做到。
【讨论】:
我假设您想要自动检测而不是简单的配置文件。方法很多很多,这里有一个简单的:
您可以在驱动器上放置一个具有唯一名称的文件并检查其是否存在:
public String getDrive() {
String fileName = "unique name.ext";
String drives = new String[] { "G", "E" }; // Or even all letters
for(String drive : drives) {
if(new File(drive + ":\\" + fileName).exists()) {
return drive;
}
}
return null;
}
【讨论】: