首页 > 解决方案 > File.delete() 返回 false?

问题描述

首先我解释架构然后我会提出真正的问题..

我正在使用 3 层架构。我完全设计了 DL、BL 以及他们的测试用例。BL 从 DL 获取数据,然后 BL 填充自己的数据结构。BL 和 DL 中提供了 Add() 和 Update(),Getter method(),当 DL 的 add 方法运行时,将生成 Customer.data 用于存储客户的数据。

当 BL 的 Add() 方法运行时,首先将填充数据结构,然后更新 DL,然后使用新实体更新 BL 中的数据结构。

在 DL 中,当我添加客户然后对其进行更新时,它可以正常工作。

DL 测试用例

“但是当我在 BL 中添加客户并对其进行更新时,getter 方法在 BL 中不起作用”并且我无法添加新客户。

BL 测试用例

注意:BL 使用 DL 的更新方法。

不知何故,在 DL 的更新方法中,当我在 DL 的测试用例文件夹中运行 add、update 时,file.delete() 返回 true,但是当我在 BL 测试用例文件夹中运行 add、update 方法时,file.delete() 返回 false。

我关闭了与文件关联的流并且文件未被其他程序使用,我检查了权限..但我不明白问题是什么

这是更新代码()

此方法检查代码是否存在,如果代码存在然后检查名称是否存在.. 如果存在则抛出异常.. 验证完成后;此方法将原始文件的内容与客户一起复制到临时文件中,然后将临时文件的内容复制到原始文件中。

//........... Code
while(randomAccessFile.getFilePointer()<randomAccessFile.length()) 
{
vCode=Integer.parseInt(randomAccessFile.readLine());
vName=randomAccessFile.readLine();
vOpeningBalance=Integer.parseInt(randomAccessFile.readLine());
vOpeningBalanceType=randomAccessFile.readLine().charAt(0);
if(vCode==customerDTOInterface.getCode()) 
{ 
access=1;
pos=randomAccessFile.getFilePointer(); randomAccessFile.seek(0);

while(randomAccessFile.getFilePointer()<randomAccessFile.length()) 
{
code=Integer.parseInt(randomAccessFile.readLine());
vName=randomAccessFile.readLine(); randomAccessFile.readLine();
randomAccessFile.readLine();
if(vName.equalsIgnoreCase(customerDTOInterface.getName())) 
{ 
throw new DAOException(vName + " exists with code as : " + code); 
} 
}

randomAccessFile.seek(pos);
trandomAccessFile.writeBytes(vCode+"\n"+customerDTOInterface.getName()
+"\n"+customerDTOInterface.getOpeningBalance()+"\n"+
customerDTOInterface.getOpeningBalanceType()+"\n");
} 
else 
{
trandomAccessFile.writeBytes(vCode+"\n"+vName+"\n"+vOpeningBalance+
"\n"+vOpeningBalanceType+"\n");
} 
} 
if(access==0)
{
trandomAccessFile.close();
tfile.delete();
throw new DAOException("Invalid Code DAO");
}
randomAccessFile.close();
trandomAccessFile.seek(0); 
file.delete();             //Delete Returns False here
.......... //More Code

标签: java

解决方案


我认为您应该在此处提供相关的代码片段。

否则,很难确定会发生什么,但file.delete由于权限问题,或者如果有人已经拥有与文件关联的句柄(对于 Windows),通常通常无法正常工作。

由于您使用的是 Windows,因此更可能出现第二个问题,并且很可能是您自己的应用程序。


推荐阅读