Java 如何从Windows共享位置读取文件?(爪哇)
有没有办法从windows上的网络共享位置读取文件 比如说,我有一个简单的代码,它从Addons文件夹中读取一个名为readMe.txt的文本文件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
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你得到答案了吗?我也有同样的疑问