File.delete()返回false?

时间:2019-01-17 06:29:35

标签: java

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

我正在使用3层体系结构。我完全设计了DL,BL及其测试用例。 BL从DL获取数据,然后BL填充自己的数据结构。 BL和DL中提供了Add()和Update(),Getter方法(),并且当DL的add方法运行时,将生成Customer.data来存储Customer的数据。

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

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

DL testCases

“但是,当我在BL中添加客户并对其进行更新,然后getter方法无法在BL中运行时”,我无法添加新客户。

BL testCases

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

在DL的Update方法file.delete()中以某种方式运行我在DL的Test Cases文件夹中添加,更新时返回true 但是当我在BL测试案例文件夹中运行添加,更新方法时,file.delete()返回false。

我关闭了与文件关联的流,并且文件没有被其他程序使用,并且检查了权限。.但是我不明白问题出在哪里

这是Update()代码

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

//........... 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

1 个答案:

答案 0 :(得分:1)

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

否则,很难确定发生了什么,但是一般来说,file.delete通常由于以下原因而无法工作 权限问题,或者如果有人已经拥有与该文件关联的句柄(对于Windows)。

由于您使用的是Windows,因此第二个问题很可能是这种情况,并且很有可能是您自己的应用程序。