【问题标题】:How to Read file from a shared location Windows? (Java)如何从 Windows 共享位置读取文件? (爪哇)
【发布时间】:2011-09-20 06:51:44
【问题描述】:

有没有办法从 Windows 上的网络共享位置读取文件?

假设我有一个简单的代码,它从 Addons 文件夹。

import java.io.File;

class Sample{

    public static void main(String[] ar){
        File file = new File("Addons/ReadMe.txt");
        System.out.println(file.getAbsolutePath());
      //followed by printing the contents of file   
    }
}

我使用具有

的 Windows 批处理 runme.bat 执行此文件
java Sample
PAUSE

只有当我将带有 ReadMe.txt、Sample.class、runme.bat 文件的 Addons 文件夹放在本地驱动器中时,bat 才会运行并执行上述类。

当它被放置在具有 UNC 路径的网络共享位置时,例如 \\name\Shared

在这种情况下,bat 文件通常从 C:\Windows 开始并抛出 classNotFoundException。我宁愿将共享驱动器映射到 *Z:* 驱动器或其他任何东西,但我不想这样做。

我希望代码以编程方式检测和检索 Addons 文件夹中 Readme.txt 的内容,无论它是在本地驱动器上还是在共享驱动器上执行。有没有办法做到这一点?请帮忙..

谢谢

维凯

【问题讨论】:

  • 您可能会在这里找到提示:stackoverflow.com/questions/1682194/…
  • 据我所知没有。映射驱动器是但 UNC 路径没有。
  • 如何有一个免费的 DLL 可以与 java 一起使用并访问 UNC,但不能立即访问,但我不是 100%,因此只能作为评论留下。 100%DLL 方式但不是 100% 没有它。如果我有任何意义。
  • 如果您遇到类未找到异常,则表示您的环境设置不正确。即它甚至没有尝试使用你的 UNC 路径,因为它无法加载类。

标签: java file


【解决方案1】:

在 Java 中使用文件路径时,请确保在提供完整路径名时正确转义所有 \

例如,如果文件在 IP 为 (10.10.10.123) 的 PC 上名为 Addons 的共享文件夹中,则完整路径将为:

File f = new File ("\\\\10.10.10.123\\Addons\\readme.txt");

除了完整路径之外,您的代码会抛出 ClassNotFound,因为您的 JAVA-CLASSPATH 设置不正确。

【讨论】:

  • 谢谢,但我希望它能够在任何共享位置上运行,而无需对 baseFolder 进行硬编码。
  • 共享路径被密码保护了怎么办?
  • @KarthikeyanKR 你得到答案了吗?我有同样的查询
【解决方案2】:

在您的 bat 文件中,%~dp0 扩展为 bat 文件的位置。您需要在类路径中使用它,以便 java 可以找到该类,尽管我不知道它是否会在 UNC 路径上阻塞。例如:

@echo off
echo %~dp0

会输出

\\host\share\dir

编辑:如果有空格,%dp0 将不起作用。这是你在你的 bat 文件中需要的:

@echo off
set p=%~dps0
echo %p%
java -classpath %p%\jarname classname
pause

【讨论】:

    【解决方案3】:

    两种方式。

    1) 将共享路径映射到本地驱动器。

    2) 如 Medopal 所述,在 new File('') 中硬编码服务器路径。

    new File("").getAbsolutePath() 之类的东西在本地系统上执行时可能会帮助我获取基本文件夹。同样,当在共享位置执行时,也没有这种方法可以以编程方式找出工作基础。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-06
      • 2015-08-20
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多