如何在Java中获取Windows的桌面位置

如何在Java中获取Windows的桌面位置,java,desktop,Java,Desktop,我想知道如何在java程序中获得桌面位置。我看了一些答案,有些人说,System.getProperty(“user.home”)+“\\Desktop但问题是,并非所有的桌面都在同一个位置。我的在OneDrive下,但我朋友的在user.home下。有人能帮忙吗?这可能适用于OneDrive案例 String desktopPath; Map<String, String> env = System.getenv(); if (env.conta

我想知道如何在java程序中获得桌面位置。我看了一些答案,有些人说,
System.getProperty(“user.home”)+“\\Desktop
但问题是,并非所有的桌面都在同一个位置。我的在OneDrive下,但我朋友的在
user.home
下。有人能帮忙吗?

这可能适用于OneDrive案例

    String desktopPath;
    
    Map<String, String> env = System.getenv();

    if (env.containsKey("ONEDRIVE"))
    {
        desktopPath = env.get("ONEDRIVE") + "\\Desktop";
    }
    else
    {
        desktopPath = env.get("USERPROFILE") + "\\Desktop";
    }

    System.out.println(desktopPath);
字符串desktopPath;
Map env=System.getenv();
if(环境容器(“ONEDRIVE”))
{
desktopPath=env.get(“ONEDRIVE”)+“\\Desktop”;
}
其他的
{
desktopPath=env.get(“用户配置文件”)+“\\Desktop”;
}
System.out.println(desktopPath);

这可能适用于onedrive机箱

    String desktopPath;
    
    Map<String, String> env = System.getenv();

    if (env.containsKey("ONEDRIVE"))
    {
        desktopPath = env.get("ONEDRIVE") + "\\Desktop";
    }
    else
    {
        desktopPath = env.get("USERPROFILE") + "\\Desktop";
    }

    System.out.println(desktopPath);
字符串desktopPath;
Map env=System.getenv();
if(环境容器(“ONEDRIVE”))
{
desktopPath=env.get(“ONEDRIVE”)+“\\Desktop”;
}
其他的
{
desktopPath=env.get(“用户配置文件”)+“\\Desktop”;
}
System.out.println(desktopPath);

您可以运行windows API命令来获取桌面位置。在powershell上运行
[Environment]:GetFolderPath(“桌面”)
应该可以做到这一点

下面是一个如何在java中实现它的示例:

publicstaticvoidmain(字符串[]args){
String command=“powershell-command\”[Environment]::GetFolderPath(“\”桌面\“)\”;
试一试{
Process Process=Runtime.getRuntime().exec(命令);
BufferedReader reader=新的BufferedReader(
新的InputStreamReader(process.getInputStream());
弦线;
而((line=reader.readLine())!=null){
System.out.println(line);//我在这里打印输出。我确信你可以从那里得到你想要的任何东西?
}
reader.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}

编辑
如果您确实尝试过,请告诉我结果。我对Onedrive桌面案例很好奇

您可以运行windows API命令来获取桌面位置。在powershell上运行
[Environment]::GetFolderPath(“桌面”)
应该可以做到这一点

下面是一个如何在java中实现它的示例:

publicstaticvoidmain(字符串[]args){
String command=“powershell-command\”[Environment]::GetFolderPath(“\”桌面\“)\”;
试一试{
Process Process=Runtime.getRuntime().exec(命令);
BufferedReader reader=新的BufferedReader(
新的InputStreamReader(process.getInputStream());
弦线;
而((line=reader.readLine())!=null){
System.out.println(line);//我在这里打印输出。我确信你可以从那里得到你想要的任何东西?
}
reader.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
编辑
如果您确实尝试过,请告诉我结果。我很好奇Onedrive桌面机箱

您在设计时是否知道用户名,或者用户名会有所不同?桌面文件夹的位置取决于用户的Windows设置(例如,使用Onedrive、自定义位置、较旧的Windows版本等)。可以为此提供更多上下文/要求…可能有其他解决方案。您在设计时是否知道用户名,或者用户名是否可以更改?桌面文件夹的位置取决于用户的Windows设置(例如,使用OneDrive、自定义位置、较旧的Windows版本等)。可以为此提供更多上下文/要求…可能有其他解决方案。使用总是比运行时更好。exec:
Process Process=new ProcessBuilder(“powershell.exe”,“-command”,“[Environment]::GetFolderPath(\“Desktop\”)。start();
最好使用而不是运行时。exec:
Process Process=new ProcessBuilder(“powershell.exe”、“-command”、“[Environment]::GetFolderPath(\“Desktop\”))。start();