java delete是什么,让我们一起了解一下。
delete是指删除,常用于编程语言中(C++,SQL等等)。而在java中的delete可以删除一个对象的属性,却不能删除一个变量,也不能删除一个函数,delete只有当一个属性无法被删除时才返回false。
为什么delete只有当一个属性无法被删除时才返回false呢?
举例说明:比如在项目中要删除文件夹, 只有一层, 下面有zip包, jpg图片, xml文件, 但是在删除时, 有一部分文件却删不掉, delete的结果是false。
示例代码如下:
public void deleteDir(File file)
{
if (file.exists())
{
File files[] = file.listFiles();
for (int i = 0; i < files.length; i++)
{
System.out.println("删除" + files[i].getAbsolutePath());
boolean b = files[i].delete();
System.out.println(b);
}
file.delete();
}
else
{
System.out.println("所删除的文件不存在!" + '\n');
}
}上述业务逻辑是, 根据业务号从数据库读取该业务号下影像的路径,然后找到对应的文件并复制到以业务号命名的文件夹下,以业务号命名的文件夹放在指定的文件夹destdir下,然后然后根据影像信息生成xml报文。
当报文生成后, 将影像和报文打包成zip, 然后将zip通过第三方接口上传到影像平台。当一个业务上传成功后, 要删除以这个业务号命名的目录, 就是在删除时出现了以上描述的问题, 那么到底是哪个环节的问题?
一个是拷贝文件, 一个是生成zip包, 无非这两个地方, 所以, 统统加了赋空和回收的操作代码如下:
fos.flush(); fos.close(); fis.close(); fis = null; fos = null; System.gc();
public boolean zipMaterial(String dir, String busNO)
{
File directory = new File(dir);
File[] files = directory.listFiles();
try
{
FileOutputStream output = new FileOutputStream(new File(dir + busNO
+ ".zip"));
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
output));
for (int i = 0; i < files.length; i++)
{
InputStream in = new FileInputStream(files[i]);
ZipEntry e = new ZipEntry(files[i].getName());
out.putNextEntry(e);
int len = 0;
byte[] b = new byte[1024];
while ((len = in.read(b)) != -1)
{
out.write(b, 0, len);
out.flush();
}
out.closeEntry();
}
out.flush();
output.flush();
out.close();
output.close();
out = null;
output = null;
System.gc();
}
catch (FileNotFoundException e)
{
return false;
}
catch (IOException e)
{
return false;
}
return true;
}再次运行测试后,就可以了。可见如果是文件, 可以删除, 但如果是目录, 必须是空的才可以删除。
以上就是小编今天的分享了,希望可以帮助到大家。