如何解决Java - 从 Windows 网络路径复制文件夹
我正在尝试从受用户名和密码保护的 windows 网络共享文件夹中复制文件夹
String url = "smb://40.123.xx.xx/sharefolder/";
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null,"username","pas.");
SmbFile dir = new SmbFile(url,auth);
if(dir.exists()) {
File[] directories = new File("\\40.123.xx.xx\\sharefolder")
.listFiles(file -> file.isDirectory() && file.getName().matches("[0-9]{6}"));
for (File getDirectory : directories) {
Path folder = Paths.get(getDirectory.getAbsolutePath());
BasicFileAttributes attr = Files.readAttributes(folder,BasicFileAttributes.class);
// System.out.println("creationTime: " + attr.creationTime());
System.out.println("creationDate : " + sdf.format(attr.creationTime().toMillis()));
try {
// FileUtils.copyDirectoryToDirectory(new File(getDirectory.getAbsolutePath()),new File("F:\\localFolder"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
但是 File[] 目录返回 null 而不是返回所有文件夹路径。
如何访问网络文件夹并将文件复制到本地路径。
解决方法
您的 UNC 路径名开头只有一个转义的反斜杠,因此不是远程文件系统的有效 UNC 路径,因此您在扫描 \40.123.xx.xx\sharefolder
时扫描了 \\40.123.xx.xx\sharefolder
:
System.out.println(new File("\\40.123.xx.xx\\sharefolder"))
\40.123.xx.xx\sharefolder (WRONG)
System.out.println(new File("\\\\40.123.xx.xx\\sharefolder"))
\\40.123.xx.xx\sharefolder (CORRECT)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。