用Apache commons-net 包对服务器上的文件进行先重写后删除操作

最近接到一个任务:为了确保安全,在删除ftp服务器上文件之前需要用1k大小的随机数重写该文件。

该操作需要用到Apache commons-net 包下面的FTPClient类,为了重写文件,我用到了该类的storeFileStream(String remote)方法,该方法返回一个OutputStream,起初没注意到OutputStream的flush和close方法就调用FTPClient类的deleteFile方法,如果该方法运行成功则返回true,但是碰到了一个奇怪的现象,deleteFile方法返回了true并没有删除文件。CSDN的网友告诉我可能是因为有文件打开着,并没有删除成功。

后来我调用了OutputStream的flush和close方法。读写第一个文件时总是正确的,当相同API读写第二个文件时,block住了。好友海波提醒了我storeFileStream(String remote)方法因为不能马上处理流,所以需要用户手工调用completePendingCommand。FTPClient要求在进行流操作之后执行completePendingCommand,以确保流处理完毕,因为流处理不是即时的,所以也没有办法手工调用completePendingCommand。于是改用public boolean storeFile(String remote, InputStream local)方法,成功解决该问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值