java 文件删除不了_java的File类的 delete方法删不掉文件的原因分析
先举几个可以删除掉文件和删除不掉文件的例子(先在F盘创建test1.txt文件,然后可以直接拷贝代码到IDE执行),最后总结下原因:
例子一:下面的例子毫无疑问是能够删除掉文件的
importjava.io.File;importjava.io.IOException;public classTest {public static void main(String[] args) throwsIOException {
File file= new File("F:/test1.txt");
file.delete();
}
}
原因:一个进程内(或者线程)单个线程执行,不存在资源共享的问题,所以可以删除。
例子二:下面的例子会删除成功,但是后面会报找不到文件的异常
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;public classTest {public static void main(String[] args) throwsIOException {
FileOutputStream fos= null;
File file= new File("F:/test1.txt");if (!file.exists()) {
file.createNewFile();//构造写入文件内容
fos = newFileOutputStream(file);
fos.write("Hello Wolrd".getBytes());
}
file.delete();
InputStream inputStream= newFileInputStream(file);
}
}
原因:即使后面的InputStream使用到file,但是红线处的delete方法已经把文件删除了,所以会报找不到系统文件的异常。接着看下面的例子。
例子三:下面的例子会删除失败,原因是InputStream正在使用file,IO流还没有关闭
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;public classTest {public static void main(String[] args) throwsIOException {
FileOutputStream fos= null;
File file= new File("F:/test1.txt");if (!file.exists()) {
file.createNewFile();//构造写入文件内容
fos = newFileOutputStream(file);
fos.write("Hello Wolrd".getBytes());
}
InputStream inputStream= newFileInputStream(file);
file.delete();
}
}
删除失败,原因是后面的InputStream使用到file,而且InputStream没有关闭流,所以导致删除失败。
例子四:下面的例子会删除成功,原因是后面的InputStream先关闭IO流了再删除
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;public classTest {public static void main(String[] args) throwsIOException {
FileOutputStream fos= null;
File file= new File("F:/test1.txt");if (!file.exists()) {
file.createNewFile();//构造写入文件内容
fos = newFileOutputStream(file);
fos.write("Hello Wolrd".getBytes());
}
InputStream inputStream= newFileInputStream(file);//关闭流
if (inputStream != null) {
inputStream.close();
}
file.delete();
}
}
原因:删除成功,原因是后面的InputStream先关闭IO流了再调用delete方法删除文件,可以和例子三对比下不同之处就明白了。
接下来总结File的delete方法需要注意的一些地方:
1. 如果要删除的文件正在被占用,文件会删不掉,例如别的程序还在对文件进行读取操作,没来得及释放文件,后边的程序就试图删除该文件,会导致删除失败。
2. 使用IO操作文件的过程中要记得关闭流,这是做程序员的最基本素质。
java 文件删除不了_java的File类的 delete方法删不掉文件的原因分析相关推荐
- java 文件删除不了File类的delete方法删不掉文件的原因分析
File directory = null;String path = tempPath + File.separator + fileName;directory = new File(path); ...
- java 获取子文件夹_JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件...
package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要 ...
- java的file类中的方法_java中File类的使用方法|chu
构造函数 public class FileDemo { public static void main(String[] args){ //构造函数File(String pathname) Fil ...
- java的setquality值多少_java使用JPEGEncodeParam类的setQuality方法进行高质量图片缩放类(转)...
java使用JPEGEncodeParam类的setQuality方法进行高质量图片缩放类(转) 找了很多都不理想,最后找个到老外写的,不得不承认老外写的确实牛B 主要是:JPEGImageEncod ...
- 第三次学JAVA再学不好就吃翔(part99)--File类
学习笔记,仅供参考,有错必究 文章目录 File类 构造方法 举个例子 File类创建功能 举个例子 File类的重命名及删除功能 举个例子 注意事项 File类的判断功能 File类的获取功能 举个 ...
- Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制)
原文:Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制) 异常机制和File类 异常机制 基本概念 异常就是"不正常"的含义,在 Java 语言中主要指 ...
- File类常用的方法以及
File类和流无关,不能完成文件的读取 File是文件和目录路径名的抽象表示形式--代表的是硬盘上的Directory(目录)和file(文件) public static void main(Str ...
- java中file类_Java中file类
File类的概述:File更应该叫做一个路径,文件路径或者文件夹路径 ,路径分为绝对路径和相对路径,绝对路径是一个固定的路径,从盘符开始,相对路径相对于某个位置,在eclipse下是指当前项目下,在d ...
- java file类包_Java中File类的常用API
Java.io包下的File类实现了Serializable和Comparable两个接口 1.创建文件 注意: 1).如果D盘下file文件夹不存在,则抛出异常;如果D盘下file文件夹存在,则创建 ...
- java file用法_Java File 类的使用方法详解(转)
转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...
最新文章
- opencv算法+人脸检测
- 使用迭代查找一个list中最小和最大值,并返回一个tuple。
- 022_applescript快速入门教程
- Cisco ACL 一例
- 加速度随机游走_IMU Noise Model
- 余承东 鸿蒙不是手机,鸿蒙手机,来了!余承东:没有人会是一座孤岛
- Maven精选系列--三种仓库详解
- jax-ws cxf_Apache CXF – JAX-WS –简单教程
- 记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
- 施一公院士关于科研、读博的精彩演讲
- 计算机突然无法黑屏无法启动不了,计算机突然死机,然后无法启动,并且屏幕保持黑屏。...
- 终于有人对语音技术来了次彻头彻尾的批判!
- TensorFlow精进之路(一):Softmax回归模型训练MNIST
- 第六步_安装SSH服务
- 振动噪声测试分析软件,DASP-V11专业版 振动噪声应变冲击
- remapkey不能打开注册表_卸载 AutoCAD 清理注册表
- 嵌入式环境搭建之zmodem
- 思科实验3.数据链路层:生成树配置
- 2017-01-01 调停者模式
- director(director)