0
Updated Question

您好朋友,我正在更新问题,我正在使用 jcifs api 从 SUSE 服务器访问 .nsf 文件,它已成功访问,但是当我尝试将此路径传递给 getDatabase() 方法时,它无法打开数据库我不要有什么问题,因为这个目录和文件可以作为共享访问

SmbFile sFile = new SmbFile(path,auth);

在这里我检查文件是否可用,现在给出静态路径

if(sFile.isFile()){
    Database database = s.getDatabase ("", sFile.getPath());
}

提前致谢。

4

2 回答 2

4

如果客户正在运行 Lotus Domino 服务器,则不应尝试将数据库作为文件对象来访问。你应该使用这样的东西:

Database db = s.getDatbase("server name/organization name", "path/test.nsf"

您应该从 Domino 服务器的管理员那里获得“服务器名称/组织名称”字符串,并且路径应该相对于 Domino 服务器的根数据目录。或者,您可以使用以下内容:

DbDirectory dbDir = s.getDbDirectory("server name/organization name") 

然后您可以使用 DbDirectory 类的方法来定位您需要的特定数据库。

编辑添加更多信息:

知道 Lotus Notes API 有自己的抽象文件名格式,实施了 20 多年,这对您也很有用。这种格式如下所示:

"CN=Domino server name/O=organization name!!folder path/test.nsf"

如果使用这种格式,那么即使数据库托管在 Domino 服务器上,也可以将 getDatabase() 的第一个参数留空。Notes API 将处理特定于操作系统的格式问题,但是 API 无法为您处理一件事:路径和文件组件在 Windows 上不区分大小写,但在 Linux 上区分大小写. 考虑一下……这甚至可能与您的问题有关。如果真正的文件名是 'Test.nsf' 而不是 'test.nsf' 你会遇到问题 - 但我很确定那将是 NotesException 而不是 FileNotFoundException 所以它可能不相关。

于 2012-08-30T22:12:06.537 回答
0

为了访问其他通勤者上的文件,您必须对该文件具有正确的权限,因此共享文件夹似乎是个好主意。当然,如果您可以选择在远程机器上定义某种服务器并将文件保存在他的根目录下,您将能够在没有特殊权限的情况下访问该文件(例如:在远程机器上定义 SFTP 服务器,将文件保存在他的根,从用户计算机连接并获取文件)

于 2012-08-30T12:33:12.260 回答