首先,我解释架构,然后提出真正的问题。
我正在使用3层体系结构。我完全设计了DL,BL及其测试用例。 BL从DL获取数据,然后BL填充自己的数据结构。 BL和DL中提供了Add()和Update(),Getter方法(),并且当DL的add方法运行时,将生成Customer.data来存储Customer的数据。
当BL的Add()方法运行时,首先将填充数据结构,然后将更新DL,然后使用新的Entity更新BL中的数据结构。
在DL中,当我添加一个客户然后对其进行更新时,它可以正常工作。
“但是,当我在BL中添加客户并对其进行更新,然后getter方法无法在BL中运行时”,我无法添加新客户。
注意:BL使用DL的更新方法。
在DL的Update方法file.delete()中以某种方式运行我在DL的Test Cases文件夹中添加,更新时返回true 但是当我在BL测试案例文件夹中运行添加,更新方法时,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
答案 0 :(得分:1)
我认为您应该在此处提供相关的代码段。
否则,很难确定发生了什么,但是一般来说,file.delete
通常由于以下原因而无法工作
权限问题,或者如果有人已经拥有与该文件关联的句柄(对于Windows)。
由于您使用的是Windows,因此第二个问题很可能是这种情况,并且很有可能是您自己的应用程序。