当前位置:  开发笔记 > 编程语言 > 正文

关闭电脑

如何解决《关闭电脑》经验,为你挑选了6个好方法。

有没有办法使用内置的Java方法关闭计算机?



1> David McGraw..:

创建自己的函数以通过命令行执行OS 命令?

为了举个例子.但要知道你想要使用它的地点和原因,正如其他人所说.

public static void main(String arg[]) throws IOException{
    Runtime runtime = Runtime.getRuntime();
    Process proc = runtime.exec("shutdown -s -t 0");
    System.exit(0);
}


+1没有比这一行更多的java - 运行时运行时= Runtime.getRuntime();
这只适用于Windows或任何地方吗?

2> David Crow..:

这是另一个可以跨平台工作的例子:

public static void shutdown() throws RuntimeException, IOException {
    String shutdownCommand;
    String operatingSystem = System.getProperty("os.name");

    if ("Linux".equals(operatingSystem) || "Mac OS X".equals(operatingSystem)) {
        shutdownCommand = "shutdown -h now";
    }
    else if ("Windows".equals(operatingSystem)) {
        shutdownCommand = "shutdown.exe -s -t 0";
    }
    else {
        throw new RuntimeException("Unsupported operating system.");
    }

    Runtime.getRuntime().exec(shutdownCommand);
    System.exit(0);
}

特定的shutdown命令可能需要不同的路径或管理权限.


然后你添加新条件...软件永远不会完成.

3> Kezz101..:

以下是使用Apache Commons Lang的 SystemUtils 的示例:

public static boolean shutdown(int time) throws IOException {
    String shutdownCommand = null, t = time == 0 ? "now" : String.valueOf(time);

    if(SystemUtils.IS_OS_AIX)
        shutdownCommand = "shutdown -Fh " + t;
    else if(SystemUtils.IS_OS_FREE_BSD || SystemUtils.IS_OS_LINUX || SystemUtils.IS_OS_MAC|| SystemUtils.IS_OS_MAC_OSX || SystemUtils.IS_OS_NET_BSD || SystemUtils.IS_OS_OPEN_BSD || SystemUtils.IS_OS_UNIX)
        shutdownCommand = "shutdown -h " + t;
    else if(SystemUtils.IS_OS_HP_UX)
        shutdownCommand = "shutdown -hy " + t;
    else if(SystemUtils.IS_OS_IRIX)
        shutdownCommand = "shutdown -y -g " + t;
    else if(SystemUtils.IS_OS_SOLARIS || SystemUtils.IS_OS_SUN_OS)
        shutdownCommand = "shutdown -y -i5 -g" + t;
    else if(SystemUtils.IS_OS_WINDOWS)
        shutdownCommand = "shutdown.exe /s /t " + t;
    else
        return false;

    Runtime.getRuntime().exec(shutdownCommand);
    return true;
}

该方法考虑了比上述任何答案更多的操作系统.它也看起来更好,然后检查os.name属性更可靠.

编辑:支持延迟和所有版本的Windows(包括8/10).



4> Wilson..:

快速回答是否定的.唯一的方法是调用特定于操作系统的命令,这些命令将导致计算机关闭,假设您的应用程序具有执行此操作所需的特权.这本质上是不可移植的,因此您需要知道应用程序的运行位置,或者为不同的操作系统使用不同的方法,并检测要使用哪种操作系统.



5> Jonathan Bar..:

我使用这个程序在X分钟内关闭计算机.

   public class Shutdown {
    public static void main(String[] args) {

        int minutes = Integer.valueOf(args[0]);
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                ProcessBuilder processBuilder = new ProcessBuilder("shutdown",
                        "/s");
                try {
                    processBuilder.start();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }

        }, minutes * 60 * 1000);

        System.out.println(" Shutting down in " + minutes + " minutes");
    }
 }



6> 小智..:

更好地使用.starts而不是使用.equals ...

String osName = System.getProperty("os.name");        
if (osName.startsWith("Win")) {
  shutdownCommand = "shutdown.exe -s -t 0";
} else if (osName.startsWith("Linux") || osName.startsWith("Mac")) {
  shutdownCommand = "shutdown -h now";
} else {
  System.err.println("Shutdown unsupported operating system ...");
    //closeApp();
}

工作得很好

镭.


直到某人使用名为Macaroni的新操作系统,其中shutdown是自毁命令.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有