我继承了此代码,其中包含一个函数,该函数将.pdf文件从一个位置复制到另一个位置,在此过程中创建新文件夹(以哈希值命名),并将新路径保存到BI工具以后使用的数据库中通过API访问文件。
将文件服务器移至新主机,并四重检查了权限和路径引用之后,将文件复制到代码中的新位置时,会收到此java.io.ioexception。复制失败,未在适用的地方创建文件夹,并且无法通过API访问文件。
日志文件显示该程序可以正确识别源文件,并正确构建目标路径。
关于什么导致此IOexception的任何想法?以前从未遇到过,而且我似乎无法在互联网上的任何地方找到相关的线程。
功能:
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
public boolean pushFile(File file, String newFileName)
{
File newFile = new File(SAN_LOCATION + "\\" + newFileName.subSequence(0, 2) + "\\" + newFileName);
try
{
System.out.print("Copying " + file.getName() + " to: " + newFile.getAbsolutePath());
FileUtils.copyFile(file, newFile);
System.out.println(" - Good file transfer");
} catch (IOException ex)
{
System.out.println(" - Bad file transfer");
Logger.getLogger(Utilities.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
return true;
}
日志片段:
Copying ARC FERM 2019-06-18 07-35-58_AM0000006.pdf to: \\tf-fs-1\arcstor\fc\fc3533e07547850176b671730ddccfcc - Bad file transfer
java : Jun 18, 2019 11:01:27 AM datatosql.PushToSQL pushFile
At C:\arc\ch_agilent_hplc.ps1:2 char:1
+ java -jar ".\Agilent.jar" CH HPLC "$file" 2>&1 | Out-File C:\arc\Logs\Agilent\ch ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Jun 18, 2019 11...hToSQL pushFile:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
SEVERE: null
java.io.IOException: There are no more files
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.WinNTFileSystem.canonicalize(Unknown Source)
at java.io.File.getCanonicalPath(Unknown Source)
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1076)
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1040)
at datatosql.PushToSQL.pushFile(PushToSQL.java:763)
at datatosql.PushToSQL.push(PushToSQL.java:508)
at agilent.Agilent.main(Agilent.java:503)
enter code here
答案 0 :(得分:0)
在Google搜索中搜索“没有更多文件”,发现存在安全软件问题的人员,特别是ASUS Data Security Manager。因此,我怀疑问题不在您的Java代码中。您可以通过手动复制文件来证明这一点,例如:
copy some.file "\\tf-fs-1\arcstor\fc\fc3533e07547850176b671730ddccfcc"
我从您的错误消息中获取了路径,但是请检查它是否正确!我认为您需要在路径两边加引号。我的猜测是,这将不起作用,因为它被远程计算机上的某些内容阻止。
答案 1 :(得分:0)
我遇到了类似的问题。就我而言,我在循环中使用 FileUtils.copyFile(file, newFile)
。在成功复制 258 份后,我会收到该错误。我更改了代码以使用 Files.copy(sourcePath, destPath)
,问题就解决了。