预期:使用File.exists()判断,如果文件存在,就进行删除。Windows10可以成功,但Linux centos不成功。
排查原因:centos下File.exists() 当文件存在时返回 false
详细如下:
Windows执行:System.out.println(file.exists()); true

Linux centos执行时,为false
代码:
//查找,先删除已有安装包
List<File> files_old = searchFiles(new File("./"), ".zip");
for (File file : files_old) {
String fileName=file.getName().toLowerCase();
System.out.println("查找到原有安装包: "+fileName+",先进行删除");
deleteFile(fileName);
}
/**
* 删除文件
*
* @param fileName 文件名
*/
public static void deleteFile(String fileName) {
File file = new File(fileName);
System.out.println(file.exists());
if (file.exists()) {
file.delete();
log.info(fileName + "文件删除成功");
}
}
遇到此问题,File.exists()问题未解决,只能去掉,直接删除文件。
//查找,先删除已有安装包
List<File> files_old = searchFiles(new File("./"), ".zip");
for (File file : files_old) {
String fileName=file.getName().toLowerCase();
System.out.println("查找到原有安装包: "+fileName+",先进行删除");
file.delete();
}
博客讲述了在Windows与Linux环境下,使用Java的File.exists()方法判断文件是否存在时出现的不同行为。在Windows上能正常工作,但在Linux CentOS系统中,即使文件存在,exists()也返回false。为解决问题,开发者选择直接删除文件,跳过exists()检查。这个问题可能涉及到文件系统差异或权限问题。

601

被折叠的 条评论
为什么被折叠?



