gpt4 book ai didi

java - 通过身份验证从共享文件夹读取文件数据 (FileNotFoundException)

转载 作者:行者123 更新时间:2023-12-01 11:58:00 25 4
gpt4 key购买 nike

以下是我用来通过验证和读取文件中的数据来从共享文件夹访问文件的代码。(使用 JCIF)

public void findFiles() throws Exception{
String url = rs.getString("addPolicyBatchFolder_login_url"); //username, url, password are specified in the property file
String username = rs.getString("addPolicyBatchFolder_login_userName");
String password = rs.getString("addPolicyBatchFolder_login_password");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, username, password);

SmbFile dir = null;
dir = new SmbFile(url, auth);
SmbFilenameFilter filter = new SmbFilenameFilter() {
@Override
public boolean accept(SmbFile dir, String name) throws SmbException {
return name.startsWith("starting string of file name");//picking files which has this string on the file name
}
};

for (SmbFile f : dir.listFiles(filter))
{

addPolicyBatch(f.getCanonicalPath()); //passing file path to another method

}
}

使用此代码,我成功进行了身份验证,并且能够列出文件。我尝试打印规范路径(我也尝试使用 f.path())并且我能够打印完整路径。

以下是下一个方法。

public void addPolicyBatch(String filename) throws Exception{
File csvFile = new File(filename);
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(csvFile)); //FileNotFound exception
while((line = br.readLine()) != null){
//more code

在上面的方法中,当涉及到bufferReader时,它显示FleNotFoundException

如果我打印规范路径,则输出如下。

smb://sharePath/file.csv 正确路径

但是在第二种方法(我得到异常)中,异常如下。

java.io.FileNotFoundException: smb:\sharePath\file.csv(文件名、目录名或卷标语法不正确)

可以看到,smb:后面只有一个\

我不确定为什么它没有传递第一种方法中打印的确切文件路径。

最佳答案

如果您从名称中删除前导 smb:,它应该可以工作。
或者,您可以按如下方式更改方法并使用 smb 文件创建读取器:

public void addPolicyBatch(SmbFile smbFile) throws Exception {
BufferedReader br = null;
try {
SmbFileInputStream smbStream = new SmbFileInputStream(smbFile);
br = new BufferedReader(new InputStreamReader(smbStream));
String line;
while((line = br.readLine()) != null){
//....

编辑,重命名文件。

如果要使用SmbFile重命名,需要认证对象

public static void renameSmbFile(SmbFile srcFile, String completeUrl, 
NtlmPasswordAuthentication auth) throws Exception {
SmbFile newFile = new SmbFile(completeUrl,auth);
srcFile.renameTo(newFile);
}

Wenn 使用 File 对象,这是不必要的:

public static void renameFile(SmbFile srcFile, String nameWithoutProtocol, 
NtlmPasswordAuthentication auth) throws Exception {
String fileName = srcFile.getCanonicalPath();
fileName = fileName.substring(4);//removing smb-protocol
new File(fileName).renameTo(new File(nameWithoutProtocol));
}

关于java - 通过身份验证从共享文件夹读取文件数据 (FileNotFoundException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28212424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com