java - delete

来源:趣味经验馆 3.02W

<link rel="stylesheet" href="https://js.how234.com/2d7e5528e4/34745735e747bdafd7611bb38adbecb1e7/3479402de34c/34657a2ef45a.css" type="text/css" /><link rel="stylesheet" href="https://js.how234.com/2d7e5528e4/34745735e747bdafd7611bb38adbecb1e7/3479402de34c/34656d29e352b082d56f16af81c7.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><style>pre{overflow-x: auto}</style>

   <link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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("所删除的文件不存在!" + '');} }

上述业务逻辑是, 根据业务号从数据库读取该业务号下影像的路径,然后找到对应的文件并复制到以业务号命名的文件夹下,以业务号命名的文件夹放在指定的文件夹destdir下,然后然后根据影像信息生成xml报文。

java delete

当报文生成后, 将影像和报文打包成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;}

再次运行测试后,就可以了。可见如果是文件, 可以删除, 但如果是目录, 必须是空的才可以删除。

热门标签