我正试图使用smb URL访问本地计算机上的文件夹。我的项目使用jar:commons-vfs2-2.0.jar和jcifs-1.3.17.jar(以及所有其他所需的jar)。完整的代码是:
public static void main(String[] args) throws FileSystemException {
jcifs.Config.registerSmbURLHandler();
StaticUserAuthenticator auth = new StaticUserAuthenticator(<domain>,<user>,<password>);
FileSystemOptions opts = new FileSystemOptions();
DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);
FileSystemManager fs = VFS.getManager();
FileObject smbFile = fs.resolveFile("smb://10.0.2.2/TimeOut/");
System.out.println(smbFile.exists() + " " + smbFile.getContent().getLastModifiedTime());
}
我收到例外情况:
我想我知道你的问题是什么,沙箱提供商在2.0中不是自动注册的。此外,您还需要在resolve调用中实际使用已配置的身份验证属性(请参见下面修改的源代码)。
我通常不使用默认的文件系统管理器,而是动态注册我的提供者,但是如果您想使用自动检测,您需要将vfs-providers.xml添加到沙箱jar中。
这就是如何用2.0构建一个完整的工作JAR:
> git clone https://github.com/apache/commons-vfs.git -b commons-vfs2-project-2.0 vfs2.0
> cd vfs2.0
> notepad sandbox\pom.xml
> notepad sandbox\src\test\java\org\apache\commons\vfs2\provider\smb\test\StandaloneMain.java
> mvn -Pinclude-sandbox -DskipTests=true clean package dependency:tree
<resource>
<directory>src/main/resources</directory>
</resource>
package org.apache.commons.vfs2.provider.smb.test;
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.commons.vfs2.FileSystemManager;
import org.apache.commons.vfs2.FileSystemOptions;
import org.apache.commons.vfs2.VFS;
import org.apache.commons.vfs2.auth.StaticUserAuthenticator;
import org.apache.commons.vfs2.impl.DefaultFileSystemConfigBuilder;
public class StandaloneMain
{
public static void main(String[] args) throws FileSystemException {
//jcifs.Config.registerSmbURLHandler();
StaticUserAuthenticator auth =
new StaticUserAuthenticator("DOMAIN", "user", "SECRET");
FileSystemOptions opts = new FileSystemOptions();
DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);
FileSystemManager fs = VFS.getManager();
if (!fs.hasProvider("smb")) throw new RuntimeException("Provider missing");
System.out.println("Connecting " + args[0] + " with " + opts);
FileObject smbFile = fs.resolveFile(args[0], opts); // added opts!
System.out.println(smbFile.exists() + " " + smbFile.getContent().getLastModifiedTime());
}
}
这就是行刑:
> set REP=C:\Users\USERNAME\.m2\repository
> java -cp sandbox\target\commons-vfs2-sandbox-2.0.jar;^
core\target\commons-vfs2-2.0.jar;^
%REP%\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;^
%REP%\jcifs\jcifs\0.8.3\jcifs-0.8.3.jar;^
sandbox\target\test-classes
org.apache.commons.vfs2.provider.smb.test.StandaloneMain smb://HOST/Users
Jan 05, 2015 2:40:19 PM org.apache.commons.vfs2.VfsLog info
INFORMATION: Using "C:\Users\USERNAME\AppData\Local\Temp\vfs_cache" as temporary files store.
Connecting smb://eckenfels02/Users with org.apache.commons.vfs2.FileSystemOptions@27dd2ec5
true 0
问题内容: 我有一个关于使用Samba JCIFS访问文件的问题。因此,有一个我要访问的服务器,我们将其称为server.unv.edu,工作组为WKGRP。此服务器中有一个共享:\\ server.unv.edu \ pcb $ 我尝试访问服务器的方式是: 和 但这不起作用。我得到了一个错误 任何人都可以给我建议或代码的正确性,以帮助我访问文件吗? 非常感谢。 问题答案: 您正在使它比应有的难度
我正在编写一个android应用程序来使用JCIFS samba库访问windows共享,但是我收到新SmbFile(path,auth)上的
我正在使用JCIFS写入windows共享。这一直很有效。它突然停止工作,现在得到一个jcifs.smb.smbauthException:访问被拒绝。例外。我知道我的凭据很好,因为我可以使用smb手动连接并写入文件夹,所以这不是问题。我使用的代码是: 它在“SmbFileOutputStream outputStream=new SmbFileOutputStream(file)”行上爆炸。几个
这表明Docker postgresql(正在运行)在该端口不可用。我尝试将添加到我的中,但没有成功。有什么提示吗?
所以我试着从android设备写一个文件到windows共享文件夹。我使用的是最新版本的JCIFS和代码,显示可用的网络共享工作良好。所以我假设JCIFS和我的LAN、WiFi等都没问题。这里是文件上传的代码(实际上我只想写一个文本到文件中): 因为url是记录的,所以我确信它是正确的(我也使用上面提到的代码检查了url,它会浏览文件夹的包含)。 但问题是Im总是得到相同的: 共享没有密码保护,所
我试图找到以下元素并在其中输入文本。我尝试了许多不同的方法来访问该元素,但总是得到相同的错误。我当前的代码行 生成相同的错误 找不到元素:{“method”:“id”,“selector”:“keyword”} 下面显示的元素显然具有Id“keyword”。 我使用Firebug捕获此元素的完整XPath。 /html/body/div/span/table[3]/tbody/tr/td/tabl