java如果文件存在则删除_Java删除文件(如果存在)的更好方法

Java删除文件(如果存在)的更好方法

我们需要先在file.delete()之前致电file.exists(),然后才能删除文件,例如

File file = ...;

if (file.exists()){

file.delete();

}

当前,在我们所有的项目中,我们都在一些util类中创建一个静态方法来包装此代码。 是否有其他方法可以实现相同目的,因此我们不需要在其他所有项目中复制utils文件。

Michal Chmi asked 2020-07-30T02:16:32Z

8个解决方案

80 votes

从Java 7开始,可以使用deleteIfExists返回一个布尔值(或引发Exception),具体取决于是否删除了文件。 对于其他文件系统操作,此方法可能不是原子的。 此外,如果JVM /其他程序正在使用文件,则在某些操作系统上它将无法删除该文件。 每个文件都可以通过toPath方法转换为路径。 例如。

File file = ...;

boolean result = Files.deleteIfExists(file.toPath()); //surround it in try catch block

sol4me answered 2020-07-30T02:16:49Z

25 votes

在我的机器上,我可以执行以下操作:

file.delete()

如果文件不存在,它将返回false。

Martijn Courteaux answered 2020-07-30T02:17:13Z

8 votes

还有Java 7解决方案,使用新的(ish)Path抽象:

Path fileToDeletePath = Paths.get("fileToDelete_jdk7.txt");

Files.delete(fileToDeletePath);

希望这可以帮助。

Eugen answered 2020-07-30T02:17:38Z

1 votes

我正在从事此类功能,也许这会使您中的一些人感兴趣...

public boolean deleteFile(File file) throws IOException {

if (file != null) {

if (file.isDirectory()) {

File[] files = file.listFiles();

for (File f: files) {

deleteFile(f);

}

}

return Files.deleteIfExists(file.toPath());

}

return false;

}

everblack answered 2020-07-30T02:17:58Z

0 votes

使用以下语句删除任何文件:

FileUtils.forceDelete(FilePath);

注意:如果要使用,请使用exception handling代码。

RANA DINESH answered 2020-07-30T02:18:22Z

0 votes

Apache Commons IO的FileUtils提供FileUtils.deleteQuietly:

删除文件,永不引发异常。 如果file是目录,请删除它和所有子目录。 File.delete()和此方法之间的区别是:

要删除的目录不必为空。

无法删除文件或目录时,不会引发任何异常。

这提供了一个单行删除调用,如果文件删除失败,它不会发出投诉:

FileUtils.deleteQuietly(new File("test.txt"));

S Williams answered 2020-07-30T02:19:00Z

-1 votes

这是我的解决方案:

File f = new File("file.txt");

if(f.exists() && !f.isDirectory()) {

f.delete();

}

java_joe answered 2020-07-30T02:19:20Z

-1 votes

File xx = new File("filename.txt");

if (xx.exists()) {

System.gc();//Added this part

Thread.sleep(2000);This part gives the Bufferedreaders and the InputStreams time to close Completely

xx.delete();

}

yogesh rajguru answered 2020-07-30T02:19:35Z

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SFTP是一种通过安全文件传输协议(SFTP)来传输文件和目录的Java程序库。SFTP是一种安全的文件传输协议,基于 SSH协议,提供强大的加密技术,能够防止未经授权的访问。删除文件是使用Java SFTP时需要掌握的一个重要操作。 使用Java SFTP删除文件的步骤如下: 1.使用JSch对象创建会话。 2.使用会话建立SFTP连接,并打开一个SFTP通道。 3.在SFTP通道中使用ChannelSftp对象执行SFTP操作,例如删除文件。 具体的代码实现如下: ```java import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import java.util.Properties; public class SftpDeleteFileDemo { private String host = "sftp.example.com"; // SFTP服务器的主机名 private int port = 22; // SFTP服务器的端口号 private String username = "myuser"; // SFTP服务器的登录用户名 private String password = "mypassword"; // SFTP服务器的登录密码 private String remoteFile = "/path/to/file.txt"; // 要删除的远程文件的路径 public static void main(String[] args) { new SftpDeleteFileDemo().deleteFile(); } public void deleteFile() { try { JSch jsch = new JSch(); Session session = jsch.getSession(username, host, port); session.setPassword(password); // 设置SFTP连接的属性 Properties config = new Properties(); config.put("PreferredAuthentications", "publickey,keyboard-interactive,password"); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); // 建立SFTP连接并打开SFTP通道 session.connect(); ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp"); channelSftp.connect(); // 删除远程文件 channelSftp.rm(remoteFile); // 关闭SFTP连接通道和会话 channelSftp.disconnect(); session.disconnect(); } catch (JSchException e) { e.printStackTrace(); } } } ``` 上述代码创建了一个名为SftpDeleteFileDemo的类,在该类中实现了一个名为deleteFile的方法,该方法利用JSch对象创建会话并建立SFTP连接。在SFTP连接中,使用ChannelSftp对象执行了删除远程文件的操作。最后,关闭SFTP连接通道和会话。 总之,使用Java SFTP删除文件是一个非常常见的操作,但是需要注意SFTP服务器的设置和权限问题。需要掌握SFTP协议的相关知识,以便在使用Java SFTP时能够更好地进行文件传输和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值