Java 为什么部署后`renameTo`返回false?
调用Java 为什么部署后`renameTo`返回false?,java,Java,调用renameTo返回false。在我的本地机器上,它可以工作,但当我在JBoss服务器上部署时,它失败了。我检查了所有路径 public boolean MoveCSVFile(String sFileName) { String dtFile = ""; java.util.Date dt = new java.util.Date(); SimpleDateFormat sdfd = new SimpleDateFormat("yyyyMMddhhmmss");
renameTo
返回false。在我的本地机器上,它可以工作,但当我在JBoss服务器上部署时,它失败了。我检查了所有路径
public boolean MoveCSVFile(String sFileName) {
String dtFile = "";
java.util.Date dt = new java.util.Date();
SimpleDateFormat sdfd = new SimpleDateFormat("yyyyMMddhhmmss");
try {
File afile = new File(this.sInputPath + File.separator + sFileName);
dtFile = System.getProperty("user.dir") + File.separator+"FilesUploaded" + File.separator+this.sSectionName;
File destination = new File(dtFile);
if(!destination.exists()) {
destination.mkdirs();
}
dtFile = dtFile + File.separator + sdfd.format(dt) + afile.getName();
File bfile = new File(dtFile);
if(afile.renameTo(bfile)) {
System.out.println("CSV moved...");
}
else {
System.out.println("CSV not moved...");
}
}
catch(Exception e) {
return false;
}
return true;
}
文件。move
更合适,尽管它也可能失败。
最简单的解决方案是,用户权限;web服务器应用程序也可能有一个安全管理器。抛出的异常将澄清原因
在日期格式中,使用了hh
,即12小时格式,hh
24小时
public void moveCSVFile(String sFileName) throws IOException {
java.util.Date dt = new java.util.Date();
SimpleDateFormat sdfd = new SimpleDateFormat("yyyyMMddHHmmss");
Path afile = Paths.get(this.sInputPath, sFileName);
Path bFile = Paths.get(System.getProperty("user.dir"),
"FilesUploaded", this.sSectionName,
sdfd.format(dt) + aFile.getFileName());
Files.createDirectories(bFile.getParent());
Files.move(aFile, bFile); //, StandardCopyOption.REPLACE_EXISTING);
}
另外,让调用方捕获任何IOException并进行处理。1)检查目录的权限。2) 抛出异常或记录异常,以便在出现异常时了解情况。这是过时的和缺乏信息的。切换到使用
路径
、路径
和文件
,您将得到相应的异常
。您应该显示或记录异常,而不是像renameTo
(返回boolean-bad)那样犯同样的错误。您通常不应该catch(异常e)
(口袋妖怪,必须捕获所有的异常?),而应该只捕获声明为有时抛出的异常。永远不要忽略例外,他们提供的信息很有价值,它可以告诉你什么是错误的。1.我已经授予了所有权限2.它返回false,没有异常,例如3.whcih包是Path,Files是,我使用的是java1.61。我使用的是java1.6,所以我猜不能使用Files类2.没有异常,别忘了,它只是回来了。尝试编写自己的文件副本。有时重命名在不同磁盘之间可能不起作用。看见可能Apache库也有一些东西。我在目标路径中复制了我的文件,并尝试删除源文件,但没有被删除。我正在使用多线程,但我不认为这是因为没有使用任何流。