//一个简单的删除文件代码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);		}			}

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