Java将应用程序移动到启动文件夹

时间:2015-06-09 20:34:36

标签: java move startup autostart

我正在尝试将我的APP添加到启动文件夹中。

public class info {

    public static String getautostart() {
        return System.getProperty("java.io.tmpdir").replace("Local\\Temp\\", "Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup");
    }

    public static String gettemp() {
        String property = "java.io.tmpdir";
        String tempDir = System.getProperty(property);
        return tempDir;
    }

    public static String getrunningdir() {
        String runningdir = ProjectGav.class.getProtectionDomain().getCodeSource().getLocation().getPath();
        return runningdir;
    }

}

那是我存储信息方法的类

主要课程:

    System.out.println(info.getautostart() + "\\asdf.jar");
    System.out.println(info.getrunningdir());
    Files.move(info.getrunningdir(), info.getautostart() + "\\asdf.jar");

这是println的输出:

  

C:\ Users \ JOHNDO~1 \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup \ asdf.jar

     

/C:/Users/John%20Doe/Downloads/project1.jar

files.move无效。

2 个答案:

答案 0 :(得分:1)

您应该使用FilePath个对象代替String个对象(Path中的Files.move())。

Path用于添加“部分”,您可以轻松检查目录是否存在。

BTW,您正在移动的文件asdf.jar,还有您正在运行的文件? JVM可防止运行jar被删除或移动。

答案 1 :(得分:1)

好吧,假设您要将jar从当前目录移动到autostart文件夹。你已经有了这些方法:

// nothing to change here - it seems to work just fine
public static String getautostart() {
    return System.getProperty("java.io.tmpdir").replace("Local\\Temp\\", "Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup");
}

// this one got confused with the '/' and '\' so I changed it
public static String getrunningdir() {
     //you need to import java.nio.file.Paths for that.
    String runningdir = Paths.get(".").toAbsolutePath().normalize().toString(); // it simulates the creation of a file in the current directory and returns the path for that file
    return runningdir;
}

现在移动文件需要Paths而不是String,因此您需要为每个字符串创建一个Path实例:

 Path autostartPath = Paths.get(getautostart());
 Path currentPath = Paths.get(getrunningdir());

如果您想在路径中指向文件(例如.jar文件),可以执行以下操作:

currentPath.resolve("myProgram.jar"); // The paths end with a `/` so you don't need to add it here

所有move应该如下所示:

Files.move(currentPath.resolve("myProgram.jar"), autostartPath.resolve("myProgram.jar"));