java - File.delete() 返回 false?
问题描述
首先我解释架构然后我会提出真正的问题..
我正在使用 3 层架构。我完全设计了 DL、BL 以及他们的测试用例。BL 从 DL 获取数据,然后 BL 填充自己的数据结构。BL 和 DL 中提供了 Add() 和 Update(),Getter method(),当 DL 的 add 方法运行时,将生成 Customer.data 用于存储客户的数据。
当 BL 的 Add() 方法运行时,首先将填充数据结构,然后更新 DL,然后使用新实体更新 BL 中的数据结构。
在 DL 中,当我添加客户然后对其进行更新时,它可以正常工作。
“但是当我在 BL 中添加客户并对其进行更新时,getter 方法在 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
解决方案
我认为您应该在此处提供相关的代码片段。
否则,很难确定会发生什么,但file.delete
由于权限问题,或者如果有人已经拥有与文件关联的句柄(对于 Windows),通常通常无法正常工作。
由于您使用的是 Windows,因此更可能出现第二个问题,并且很可能是您自己的应用程序。
推荐阅读
- python-3.x - 如何通过定义函数在元组列表中查找字符串
- python-3.x - 三次样条向量
- google-sheets - Google 表格帮助 - 如何应用具有不同尺寸标准范围的 COUNTIFS
- python - 不处理只有一个参数的 Flask url
- python - 查找时间是否在时间范围内并在 Pandas 中返回相应的值?
- apache-kafka-connect - 如何在 Pod kubernates 中从一个容器中的另一个容器访问 rest api
- jenkins - 将代码提交到 Azure 存储库时触发 Jenkins 作业
- reactjs - Recharts 渲染缓慢问题
- javascript - 控制台抛出语法“未捕获的类型错误:note.addEventListener 不是函数”?
- pic - 从 MPLAB 8.92 到 MPLAB X 5.25:我现在如何以编程方式停止模拟器?