V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rajab
V2EX  ›  Java

Win10 下 subst 建立的虚拟磁盘分区 Java 程序无法访问

  •  
  •   rajab · 2019-07-27 21:19:38 +08:00 · 3683 次点击
    这是一个创建于 1947 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题。Win10 系统,OpenJDK 1.8.0_25,
    使用 subst 命令在创建了一个虚拟磁盘,如
    subst Z: D:\test
    test 文件夹下有一个 1.txt 文件
    资源管理器中可以看到 Z 盘,
    使用一个简单的 Java 程序读取 Z:\1.txt ,报 IOException: 系统找不到指定的路径
    接着:
    File file = new File("Z:\\1.txt");
    System.out.println(file.exists());
    结果也是 false。
    百思不得其解,之前虚拟的磁盘在 Win7 下 Java 程序是可以使用的啊,是 UAC 的锅吗?奇怪。
    11 条回复    2019-08-13 16:38:20 +08:00
    celeron533
        1
    celeron533  
       2019-07-27 22:30:05 +08:00
    好像 win10 下的 subst 仅对当前用户有效。如果 java 运行在另一个用账号下,可能会发生这个问题。我好像一年前遇到过类似的问题,但记不清了。
    rajab
        2
    rajab  
    OP
       2019-07-27 23:01:05 +08:00 via Android
    @celeron533 目前系统上就有一个用户,好像 java 也不是以系统用户运行的
    laminux29
        3
    laminux29  
       2019-07-28 08:13:27 +08:00
    subst 一堆 bug,别用。这种事情走稳妥的办法,花点钱,该买大盘买大盘,该重新分区就重新给 C 分个大区。
    rajab
        4
    rajab  
    OP
       2019-07-28 08:36:21 +08:00 via Android
    @laminux29 不是因为盘小,对于盘小我一般用 ntfs 的目录连接点或者其他链接形式 ,安利下 hardlink shell extension 特别好用。
    用 subst 的目的是虚拟出一个驱动器,主要用来统一开发环境,项目有个目录需要上传写入和读取,统一配置 z:,开发和部署的时候,把目录
    rajab
        5
    rajab  
    OP
       2019-07-28 08:38:38 +08:00 via Android
    @laminux29
    映射到 z 盘就好了,省得修改配置文件了。用户那边根据磁盘空间的情况部署时映射一个目录就行,写个批处理就搞定了。不好意思不小心按到回车分成两个回复了。
    Cooky
        6
    Cooky  
       2019-07-28 09:52:16 +08:00
    用环境变量呗,环境变量能改还能针对每个程序设置,分区盘符改着可就麻烦咯
    msg7086
        7
    msg7086  
       2019-07-28 10:44:11 +08:00
    subst 既不是创建分区也不是创建磁盘,而是创建一个虚拟驱动器号。
    这东西始建于 1985 年,用途是在 DOS 下创建一个虚拟驱动器号,指向一个目录。

    subst 主要是 DOS 时代的东西,创建出来的磁盘属于 DOS 设备,和 Windows 上的东西不见得就能和平相处。
    在 20 年前就淘汰了,不能用还算挺正常的我觉得。
    laminux29
        8
    laminux29  
       2019-07-28 13:18:22 +08:00
    @rajab 我是前几年研究这玩意,当时遇到各种失效、各种软件不支持的问题。

    反正你觉得够用就好,只是如果要上生产,最好测测再用,避免踩雷。
    realpg
        9
    realpg  
       2019-07-28 13:43:31 +08:00
    要不 映射网络驱动器试试 弄本机共享 可以统一盼复
    TobeyChang
        10
    TobeyChang  
       2019-08-13 16:36:20 +08:00
    @rajab 看到别人讲 subst 的映射关系并不是全局的,在非管理员权限下映射的盘符,其他权限下的程序是看不到该映射的
    TobeyChang
        11
    TobeyChang  
       2019-08-13 16:38:20 +08:00
    @rajab 可以在管理员权限下映射一( win10 管理员权限在映射之后在我的电脑是看不到虚拟驱动器的)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2986 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:20 · PVG 21:20 · LAX 05:20 · JFK 08:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.