使用 Java 和 Samba JCIFS 访问文件

2023-12-14

我有一个关于使用 Samba JCIFS 访问文件的问题。

所以我想访问一个服务器,我们将其称为server.unv.edu,工作组是WKGRP。

此服务器中有一个共享:\\server.unv.edu\pcb$

我尝试访问服务器的方式是:

public class SMBAuthenticator extends NtlmAuthenticator {

private String username = "username";
private String password = "password";
private String domain = "smb://server.unv.edu/WKGRP/";

public SMBAuthenticator() {
    NtlmAuthenticator.setDefault(this);
}

and

public class SMBConnection {

public String urlString = "smb://server.unv.edu/pcb$/path/file.txt";
NtlmPasswordAuthentication auth;
SmbFile smbFile;

public SMBConnection() throws MalformedURLException{;
    //url = new URL(urlString);
    SMBAuthenticator authenticator = new SMBAuthenticator();
    auth = authenticator.getNtlmPasswordAuthentication();   
    smbFile = new SmbFile(urlString, auth);
}

public InputStream getSMBInputStream() throws IOException{
    return this.smbFile.getInputStream();
}

public InputStream getInputStream() throws IOException{
    InputStream is = this.getSMBInputStream();
    return is;
}
}

但这行不通。我收到以下错误:

jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password.
at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:544)
at jcifs.smb.SmbTransport.send(SmbTransport.java:661)
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:390)
at jcifs.smb.SmbSession.send(SmbSession.java:218)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:176)
at jcifs.smb.SmbFile.doConnect(SmbFile.java:929)
at jcifs.smb.SmbFile.connect(SmbFile.java:954)
at jcifs.smb.SmbFile.connect0(SmbFile.java:880)
at jcifs.smb.SmbFile.open0(SmbFile.java:972)
at jcifs.smb.SmbFile.open(SmbFile.java:1006)
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:73)
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65)
at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2844)
at edu.umd.lib.sambaConnection.SMBConnection.getSMBInputStream(SMBConnection.java:33)
at edu.umd.lib.sambaConnection.SMBConnection.getInputStream(SMBConnection.java:37)
at edu.umd.lib.sambaConnection.SambaConnectionTest.test(SambaConnectionTest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

任何人都可以给我建议或代码的正确性,以帮助我访问该文件吗?


你让这件事变得比应有的更加困难。请按照以下步骤操作,并确保您正在创建的共享文件夹对您正在使用的用户具有写入权限。

  1. 下载jar文件http://jcifs.samba.org/(只有一个jar文件)
  2. 复制并粘贴以下代码以及您的用户名、密码和共享文件夹信息,这就是您所需要的

我在 Linux 上运行这个程序并想写入 Windows 盒子,所以你想创建一个共享文件夹并将共享文件夹名称放入下面的变量中 如果您不知道如何在 Windows 上创建共享文件夹...一如既往地使用 google

    String user = "your_user_name";
    String pass ="your_pass_word";

    String sharedFolder="shared";
    String path="smb://ip_address/"+sharedFolder+"/test.txt";
    NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass);
    SmbFile smbFile = new SmbFile(path,auth);
    SmbFileOutputStream smbfos = new SmbFileOutputStream(smbFile);
    smbfos.write("testing....and writing to a file".getBytes());
    System.out.println("completed ...nice !");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 和 Samba JCIFS 访问文件 的相关文章

  • SLF4J - Logback:如何在运行时配置记录器?

    我们在项目中使用 LogBack 我想根据一些数据库值配置记录器 即如果某个数据库值设置为 true 则记录器应同时使用文件和数据库附加程序 如果为 false 则记录器必须仅使用数据库附加程序 我还想保留使用静态最终记录器 因此我不会在每
  • java.lang.NoClassDefFoundError: javax/ws/rs/core/Configuration

    我正在实现轻松的网络服务 并且正在使用 jboss 4 0 但我遇到以下异常 java lang NoClassDefFoundError javax ws rs core Configuration 我的 web xml 是
  • 在 Java 中使用 Apache POI XWPF 在同一个 Word 文档中横向和纵向页面

    我正在尝试使用 Java 和 Apache POI 库创建一个包含一些横向页面和一些纵向页面的 Word 文档 我可以更改所有页面的方向 但有没有办法只更改其中某些页面的方向 我尝试过使用不同的部分和主体 但无济于事 目前我已经编写了一个函
  • Java:BufferedReader readLine() 中的 IOEXception 有何用途?

    我可以使用 try catch 循环 修复 以下异常 但我无法理解原因 为什么 in readLine 部分会不断引发IOExceptions 抛出此类异常的真正目的是什么 目标可能不仅仅是更多副作用 代码和 IOException jav
  • 如何解析比 Java 中 NumberFormat 更严格的数字?

    我正在验证表单中的用户输入 我解析输入NumberFormat http docs oracle com javase 7 docs api java text NumberFormat html 但它是邪恶的 几乎允许任何事情 有没有办法
  • 通过 JDBC 调用 Sybase 存储过程时结果集为空

    我正在调用一个通过 JDBC 返回多个结果集的 Sybase 存储过程 我需要获取一个特定的结果集 其中有一列名为 结果 这是我的代码 CallableStatement cs conn prepareCall sqlCall cs reg
  • 如何使用 Apache Camel 路由从授权服务器获取访问令牌?

    我有一个授权服务器 带有注释的简单类 SpringBootApplication RestController Configuration EnableAuthorizationServer oauth2 security 在端口上运行80
  • Maven:如何获取捆绑在包中的 .so 库

    我有一个带有 jar 和 so 文件的第三方库 我配置了 pom xml 如下
  • 用dagger 2查看依赖注入

    我有一个自定义视图扩展TextView 我应该在哪里调用我的组件来注入视图 component inject customTextView 因此 我发现我需要在自定义视图的构造函数中添加注入 在所有视图中 或者使一个调用另一个 Exampl
  • 用 Java 捕获扬声器输出

    使用Java可以捕获扬声器输出吗 此输出不是由我的程序生成的 而是由其他正在运行的应用程序生成的 这可以用 Java 完成还是我需要求助于 C C 我有一个基于 Java 的应用程序 使用过的爪哇声音 https stackoverflow
  • Hibernate3:自引用对象

    需要一些帮助来了解如何执行此操作 我将在文件系统上运行递归 查找 并且希望将信息保留在单个数据库表中 具有自引用的层次结构 这是我想要填充的数据库表结构 目录对象表 id int NOT NULL name varchar 255 NOT
  • Spark toLocalIterator 和迭代器方法之间的区别

    在编写 Spark 程序时我遇到了这个toLocalIterator 方法 之前我只使用iterator method 如果有人曾经使用过这种方法 请点亮 我在使用时遇到foreach and foreachPartitionSpark程序
  • 获取运行时生成的类的字节

    我正在使用一个 Java 框架 该框架使用自定义类加载器在运行时生成一些 代理 类 我想为任何这样的类获取自定义 ClassLoader 从 loadClass 返回的与该类对应的原始字节数组 这可能吗 我知道 如果一个类作为资源存在 那么
  • 为什么 Libgdx 的 Table 不接受缩放操作?

    我在 libgdx 库中使用 scene2d 在游戏中创建一些 UI 我使用了一个表格 我想在用户触摸时采取一些缩放操作以使按钮触摸有意义 当我使用任何其他 Actor 类型 例如 Group 并为其提供缩放操作时 它可以工作 但不能工作表
  • Java字符串中的字符数[重复]

    这个问题在这里已经有答案了 可能的重复 Java 使用unicode上划线显示平方根时字符串的长度 https stackoverflow com questions 7704426 java length of string when u
  • Spring @Configuration如何缓存对bean的引用

    使用基于 Java 的配置时 Spring 如何防止再次调用 bar 我想知道编译时注释处理或通过代理方法 Configuration public class AppConfig Bean public Foo foo return ne
  • Java 通用问题

    下面的代码可以编译 但如果我取消注释行 它不会编译 我很困惑为什么 HashMap 确实扩展了 AbstractMap 并且声明映射的第一行可以正常编译 import java util AbstractMap import java ut
  • 在 Java Jersey 2 JAX-RS 中初始化单例

    我是泽西岛 2 22 2 的新手 请耐心等待 我正在创建一个与 LDAP 服务器交互的 REST 服务 用于存储 删除和检索用户数据 该服务通过执行加密 解密充当安全中介 在使用 REST 服务之前必须进行相当多的初始化 并且我只想执行此初
  • Jersey bean 验证 ParameterNameProvider

    我正在阅读关于泽西岛的文档Bean验证 https jersey java net documentation latest bean validation html The ParameterNameProvider示例显示如何定义方法的
  • 如何使用 JRE 部署 JavaFX 11 桌面应用程序

    我有一个 JavaFX JDK 8 桌面业务应用程序 它使用 Java Web Start 进行部署 用户安装了 Java 8 只需访问 URL 我的 AWS Linux 服务器上的公共 URL 即可下载 启动应用程序 使用 Web Sta

随机推荐

  • 使用自动增量字段插入触发器之前/之后

    我在使用插入触发器时遇到问题 该触发器应该修复表中的列 id auto increment int thread id int NULL 我想要实现的是设置thread id to id如果它被插入为 NULL 我失败了 因为 using
  • 如何给 ImageView 赋予六边形形状

    如何赋予六边形形状ImageView 可以用同样的方式做吗 如果是这样那怎么办 如果这不可能通过此方法实现 那么如何实现呢
  • 如何让k8s cpu和内存HPA协同工作?

    我正在使用 k8s HPA 模板作为 CPU 和内存 如下所示 apiVersion autoscaling v1 kind HorizontalPodAutoscaler metadata name Chart Name cpu labe
  • 检索任意日期之前/之后最后更新的属性

    我有兴趣检索 WikiData 项目的属性 但前提是该属性是在某个日期之前或之后添加或修改的 所以我有这个SPARQL查询获取 Q24 的所有属性 SELECT itemLabel propLabel statement property
  • 是否可以在 Rust for 循环中声明变量的类型?

    C 示例 for long i 0 i lt 101 i 在 Rust 中我尝试过 for i i64 in 1 100 我可以轻松地声明一个let i i64 for循环之前的var 但我宁愿学习正确的方法来做到这一点 但这导致 erro
  • 在 JavaScript 中正确引用 ASP.NET 用户控件中的控件

    我有一个 ASP NET 用户控件 其中包含一个文本框控件和一个按钮控件 该用户控件将多次添加到我的网页中 我需要一段 JavaScript 只要文本框发生更改就会运行 并在文本框的值无效时禁用按钮 我的问题是 如何将 JavaScript
  • b 表中的 BootstrapVue 条件列

    如果当前用户是管理员 我只想显示我的专栏之一 我不知道如何使用 bootstrapVue 来做到这一点 有任何想法吗 这是基于 Troy 评论的片段 我已向名为的字段对象添加了一个自定义属性requiresAdmin 这不是标准的一部分Bo
  • 通过 bash 脚本与多个目录中的文件交互

    我生成了一个迭代多个 csv 文件的脚本 将相关文件转换为 UTF 8 bin bash cd home user prod charset text plain charset iso 8859 1 for file in csv do
  • 如何将字符串放入整数数组C++

    我有一个字符串 其中包含用户输入的内容 string userstr cout lt lt Please enter a string getline cin userstr 然后将该字符串存储在 userstr 中 然后我希望将该字符串存
  • 限制mysql中连接的行数

    因此 我想将两个表连接在一起 但对于第一个表中的每一行 我只想将其连接到另一个表中的前 8 个匹配行 并按该表中的一列排序 我可以使用任何聪明的语法 还是我需要弄乱子查询 看一下 如何在 SQL 中选择每组的第一个 最小 最大行 Secti
  • 如何将多个参数绑定到 MySQLi 准备好的语句

    我有可变数量的参数要插入 但出现错误 2031 No data supplied for parameters in prepared statement警告后Number of variables doesn t match number
  • 导入mysql数据中断,如何恢复?

    我使用导入了一个大型mysql数据库 mysql uroot ppassword dbName 数据库在处理过程中消失了 可能是由于几天后超时 有办法恢复吗 或者我运气不好 需要删除现有的数据库并重新导入 在命令行上使用 ignore 选项
  • 每行阅读 PDF

    如何阅读 PDF 文件line by line使用 iText5 for NET 我在互联网上搜索过 但我只找到了每页内容阅读 PDF 文件 请看下面的代码 public string ReadPdfFile object Filename
  • 如何使用 grid.arrange 排列任意数量的 ggplot?

    这是交叉发布在 ggplot2 谷歌组上的 我的情况是处理一个函数输出任意数量的图 取决于用户提供的输入数据 该函数返回 n 个图的列表 我想将这些图以 2 x 2 的形式排列 我正在努力解决以下同时存在的问题 我怎样才能灵活地获得任意 n
  • 如何使用git命名空间隐藏分支

    背景 我正在与一个大型团队合作 使用git用于版本控制 正常流程是 人们从 积压队列 中选择一张票 通过当地分支机构 即git checkout b my feature branch 进行多次提交 即git commit 将本地更改推送到
  • Firebase 令牌验证

    我有一个 PHP 后端和一个 Android 客户端 使用客户端 用户可以使用 Google 或 Facebook 均通过 Firebase 登录我的应用程序 我从以下位置获取令牌FirebaseUser并将其发送到我的服务器 很简单 第一
  • MongoDB 订单/销售聚合组每月总和 + 计数字段

    谁知道更好的解决方案来按日期和总计对订单进行分组并按来源进行计数 当然 我可以按来源分组 然后我仅获得该来源的总计 之后我可以更改结果以获得所需的结果 但我想知道是否可以通过一种简单的方式 group陈述 Eg ordersByApp 1
  • OpenCV-(-215:断言失败) _src.total() > 0 函数 'cv::warpPerspective'

    我的完整代码 import cv2 as cv import numpy as np cap cv VideoCapture 0 cv CAP DSHOW imgTarget cv imread photos TargetImage jpg
  • python 中 Appengine 的通配符搜索

    我刚刚开始在 Google App Engine 上使用 Python 构建联系人数据库 实现通配符搜索的最佳方法是什么 例如 我可以执行 query name newman 吗 不幸的是 Google 应用引擎无法进行部分文本匹配 来自文
  • 使用 Java 和 Samba JCIFS 访问文件

    我有一个关于使用 Samba JCIFS 访问文件的问题 所以我想访问一个服务器 我们将其称为server unv edu 工作组是WKGRP 此服务器中有一个共享 server unv edu pcb 我尝试访问服务器的方式是 publi