Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Windows:显示带有File.listRoots的映射网络驱动器_Java_Windows_Filesystems - Fatal编程技术网

Java Windows:显示带有File.listRoots的映射网络驱动器

Java Windows:显示带有File.listRoots的映射网络驱动器,java,windows,filesystems,Java,Windows,Filesystems,代码: 当我启动cmd并运行这个类时,我的所有驱动器都会列出。当我以管理员身份启动cmd并运行此命令时,映射的网络驱动器不会列出 另外,当我手动启动服务器并调用File.listRoots()时,我的所有驱动器都会列出。但是,当我使用服务启动服务器时,不会列出网络驱动器 如何始终列出网络驱动器?我读到我可以在服务中映射网络驱动器,但这不是一个选项。驱动器已经存在,不允许我对其进行任何更改。映射的驱动器是特定于用户的(可能在登录期间映射),而不是特定于计算机的。因此,当映射驱动器上的userA日志

代码:

当我启动cmd并运行这个类时,我的所有驱动器都会列出。当我以管理员身份启动cmd并运行此命令时,映射的网络驱动器不会列出

另外,当我手动启动服务器并调用File.listRoots()时,我的所有驱动器都会列出。但是,当我使用服务启动服务器时,不会列出网络驱动器


如何始终列出网络驱动器?我读到我可以在服务中映射网络驱动器,但这不是一个选项。驱动器已经存在,不允许我对其进行任何更改。

映射的驱动器是特定于用户的(可能在登录期间映射),而不是特定于计算机的。因此,当映射驱动器上的
userA
日志时。当您以其他用户(即管理员或作为系统运行的服务)的身份启动程序时,映射的驱动器不可用,因此您无法访问它们。你的选择是:

  • 将驱动器重新映射为新用户(即服务)
  • 在当前用户的上下文中运行应用程序
  • 通过UNC路径访问您需要的文件(即,代替
    s:\blah
    使用
    \\server\shared\u folder\blah
import java.io.*;

public class TestFileRoots {

    public static void main(String[] args) {
        for(File f : File.listRoots()){
            System.out.println(f.getAbsolutePath());
        }
   }

}