Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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共享位置读取文件?(爪哇)_Java_File - Fatal编程技术网

Java 如何从Windows共享位置读取文件?(爪哇)

Java 如何从Windows共享位置读取文件?(爪哇),java,file,Java,File,有没有办法从windows上的网络共享位置读取文件 比如说,我有一个简单的代码,它从Addons文件夹中读取一个名为readMe.txt的文本文件 import java.io.File; class Sample{ public static void main(String[] ar){ File file = new File("Addons/ReadMe.txt"); System.out.println(file.getAbsolutePat

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

比如说,我有一个简单的代码,它从Addons文件夹中读取一个名为readMe.txt的文本文件

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的内容,而不管它是在本地驱动器还是在共享驱动器上执行。有没有办法做到这一点?请帮忙

谢谢

维凯


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

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

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

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

在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
有两种方法

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

2) 否则,将服务器路径硬编码到Medopal提到的新文件(“”)中


类似于
newfile(“”)。getAbsolutePath()
的内容可能有助于在本地系统上执行时获取基本文件夹。同样,当在共享位置上执行时,也没有这样的方法以编程方式找到工作基础

你可能会在这里找到一个提示:据我所知不是这样。映射驱动器是,但UNC路径号。此外,这是:无论如何,有一个DLL是免费的,你可以使用java和访问UNC,但不是立即,但我不是100%,因此只留下评论。100%DLL方式,但不是100%不使用它。如果我说的有道理的话。如果你得到一个类未发现异常,这意味着你的环境设置不正确。i、 e.它甚至没有尝试使用你的UNC路径,因为它无法加载类。谢谢,但我希望它能够在任何共享位置上运行,而无需硬编码baseFolder。如果共享路径受密码保护,该怎么办?@KarthikeyanKR你得到答案了吗?我也有同样的疑问