允许用户将其“user”目录输入到.jar安装程序中

时间:2013-10-25 16:22:26

标签: java jar windows-installer

public static void moveSQLite(){
        File source = new File("C:\\Users\\520\\Desktop\\System.Data.SQLite"); // Specify initial path
        File target = new File("C:\\Windows\\Microsoft.NET\\assembly\\GAC_64"); // Desired path

        // If the source location exists, delete the any old source files
        // and copy the entire directory of the source to the target location
        if(source.exists()){
            System.out.println("Installing SQLite Database.");
            try {
                FileUtils.deleteDirectory(target);
                System.out.println("Deleting previous versions of System.Data.SQLite");
                System.out.println("\"" + source + "\"" + " was successfully"
                        + " copied to " + "\"" + target + "\"");
                FileUtils.copyDirectory(source, target);
                System.out.println("SQLite database has been installed.");
            }catch (IOException e) {
                e.printStackTrace();
            }
        // Otherwise prompt the user that the source directory does not exist
        }else{
            System.out.println("SQLite not found - are you sure you have it in the right directory?");
        }
    }

以上是我的安装程序中使用的众多方法之一(基本上将文件拖放到用户计算机中的特定位置)的摘录。在命令行中,或者最好是在用户界面中,我想允许用户输入他们的“源”目录,也就是说,在这种情况下,我的“用户”目录是520,但对于其他用户,它可能是不同。我可以用asterix替换它,允许Windows找出目录本身,还是我必须对目录进行硬编码?有软件开发经验的人请输入您的答案 - 谢谢。

1 个答案:

答案 0 :(得分:1)

  

我可以用星号替换它,让Windows可以找出   目录本身,还是我必须将目录硬编码?

如果您希望任何系统为自己设计用户目录(不仅仅是Windows,而是任何系统),您可以使用

String homeDirectory=System.getProperty("user.home");

然后,您可以在用户的​​主目录中创建自己的文件结构但是要注意使用"foo\bar",因为“\”不是通用的,并且不适用于所有系统。然而,java再次与另一个系统属性

进行救援
String PATHSEPERATOR=System.getProperty("file.separator");

然后使用:

homeDirectory=homeDirectory+"foo"+PATHSEPERATOR+"bar";

然后,您可以使用它来创建File对象

File homeDirectoryAsFile = new File(homeDirectory);