java file delete忽略错误_关于java中file.delete不好用的问题

//一个简单的删除文件代码

public boolean deleteFile(String sPath) {

boolean flag = false;

File file = new File(sPath);

// 路径为文件且不为空则进行删除

if (file.isFile() && file.exists()) {

file.delete();

System.out.println("delete file.");

flag = true;

}

return flag;

}

单独测试删除代码没有问题。

后来在读文件的方法中调用删除方法,在读取完毕后删除。public void readFile(String filename)

{

FileReader reader = null;

try

{

reader = new FileReader(filename);// 读取url文件

}

catch (FileNotFoundException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

String name = filename.split("\\\\")[filename.split("\\\\").length-1];

System.out.println("filename is "+ filename);

BufferedReader br = new BufferedReader(reader);

String s1 = null;

String temStr = "";

String content = "";

int breakCount = 0;

try

{

while ((s1 = br.readLine()) != null)

{

breakCount++;

if(s1.contains("------------------------"))

{

}

else

{

if(breakCount == 2 && s1.contains("docid"))

{

break;

}

}

}

if(breakCount != 2)

{

System.out.println(breakCount);

boolean flag = deleteFile(filename);

System.out.println(flag);

}

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

try

{

br.close();

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

try

{

reader.close();

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

这样写的时候遇到了问题,delete方法返回了true值,但是文件并没有被删除

检查之后发现是因为文件的读取流未关闭,造成文件无法删除。

但是为什么会返回true还没有确定,估计是个小bug吧

把代码修改一下public void readFile(String filename)

{

FileReader reader = null;

try

{

reader = new FileReader(filename);// 读取url文件

}

catch (FileNotFoundException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

String name = filename.split("\\\\")[filename.split("\\\\").length-1];

System.out.println("filename is "+ filename);

BufferedReader br = new BufferedReader(reader);

String s1 = null;

String temStr = "";

String content = "";

int breakCount = 0;

try

{

while ((s1 = br.readLine()) != null)

{

breakCount++;

if(s1.contains("------------------------"))

{

}

else

{

if(breakCount == 2 && s1.contains("docid"))

{

break;

}

}

}

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

try

{

br.close();

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

try

{

reader.close();

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

if(breakCount != 2)

{

System.out.println(breakCount);

boolean flag = deleteFile(filename);

System.out.println(flag);

}

}

把删除放在流关闭之后,这样就没有问题了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值