java使用io创建文件与删除文件的工具类
java中对于文件的操作,是再常见不过了。以下代码是自己代码中所用到的工具类,仅供参考。
import java.io.File;
import java.io.IOException; /**
* 创建新文件和目录
*
* @author Fly
*/
public class CreateFile {
/**
* 验证字符串是否为正确路径名的正则表达式
*/
private static String matches = "[A-Za-z]:\\\\[^:?\"><*]*"; /**
* 通过 sPath.matches(matches) 方法的返回值判断是否正确
* sPath 为上传的文件路径字符串
*/
static boolean flag = false; /**
* 文件
*/
static File file; /**
* 根据路径删除指定的目录或文件,无论存在与否
*
* @param deletePath
* @return
*/
public static boolean deleteFolder(String deletePath) {
flag = false;
if (deletePath.matches(matches)) {
file = new File(deletePath);
// 判断目录或文件是否存在
if (!file.exists()) {
// 不存在返回 false
return flag;
} else {
// 判断是否为文件
if (file.isFile()) {
// 为文件时调用删除文件方法
return deleteFile(deletePath);
} else {
// 为目录时调用删除目录方法
return deleteDirectory(deletePath);
}
}
} else {
System.out.println("要传入正确路径!");
return false;
}
} /**
* 删除单个文件
*
* @param filePath 文件路径
* @return
*/
public static boolean deleteFile(String filePath) {
flag = false;
file = new File(filePath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
file.delete();// 文件删除
flag = true;
}
return flag;
} /**
* 删除目录(文件夹)以及目录下的文件
*
* @param dirPath
* @return
*/
public static boolean deleteDirectory(String dirPath) {
// 如果sPath不以文件分隔符结尾,自动添加文件分隔符
if (!dirPath.endsWith(File.separator)) {
dirPath = dirPath + File.separator;
}
File dirFile = new File(dirPath);
// 如果dir对应的文件不存在,或者不是一个目录,则退出
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
flag = true;
// 获得传入路径下的所有文件
File[] files = dirFile.listFiles();
// 循环遍历删除文件夹下的所有文件(包括子目录)
if (files != null) {
for (File file1 : files) {
if (file1.isFile()) {
// 删除子文件
flag = deleteFile(file1.getAbsolutePath());
System.out.println(file1.getAbsolutePath() + " 删除成功");
if (!flag) {
break;// 如果删除失败,则跳出
}
} else {// 运用递归,删除子目录
flag = deleteDirectory(file1.getAbsolutePath());
if (!flag) {
break;// 如果删除失败,则跳出
}
}
}
} if (!flag) {
return false;
}
// 删除当前目录
return dirFile.delete();
} /**
* 创建单个文件
*
* @param filePath 文件所存放的路径
* @return
*/
public static boolean createFile(String filePath) {
File file = new File(filePath);
if (file.exists()) {// 判断文件是否存在
System.out.println("目标文件已存在" + filePath);
return false;
}
if (filePath.endsWith(File.separator)) {// 判断文件是否为目录
System.out.println("目标文件不能为目录!");
return false;
}
if (!file.getParentFile().exists()) {// 判断目标文件所在的目录是否存在
// 如果目标文件所在的文件夹不存在,则创建父文件夹
System.out.println("目标文件所在目录不存在,准备创建它!");
if (!file.getParentFile().mkdirs()) {// 判断创建目录是否成功
System.out.println("创建目标文件所在的目录失败!");
return false;
}
}
try {
if (file.createNewFile()) {// 创建目标文件
System.out.println("创建文件成功:" + filePath);
return true;
} else {
System.out.println("创建文件失败!");
return false;
}
} catch (IOException e) {// 捕获异常
e.printStackTrace();
System.out.println("创建文件失败!" + e.getMessage());
return false;
}
} /**
* 创建目录(如果目录存在就删掉目录)
*
* @param destDirName 目标目录路径
* @return
*/
public static boolean createDir(String destDirName) {
File dir = new File(destDirName);
if (dir.exists()) {// 判断目录是否存在
System.out.println("目标目录已存在!");
//return false;
return CreateFile.deleteDirectory(destDirName);
}
System.out.println("已删除原目录并重新创建!");
if (!destDirName.endsWith(File.separator)) {// 结尾是否以"/"结束
destDirName = destDirName + File.separator;
}
if (dir.mkdirs()) {// 创建目标目录
System.out.println("创建目录成功!" + destDirName);
return true;
} else {
System.out.println("创建目录失败!");
return false;
}
} /**
* 创建临时文件
*
* @param prefix 前缀字符串定义的文件名;必须至少有三个字符长
* @param suffix 后缀字符串定义文件的扩展名;如果为null后缀".tmp" 将被使用
* @param dirName 该目录中的文件被创建。对于默认的临时文件目录nullis来传递
* @return 一个抽象路径名新创建的空文件。
* @throws IllegalArgumentException -- 如果前缀参数包含少于三个字符
* @throws IOException -- 如果文件创建失败
* @throws SecurityException -- 如果SecurityManager.checkWrite(java.lang.String)方法不允许创建一个文件
*/
public static String createTempFile(String prefix, String suffix, String dirName) {
File tempFile = null;
if (dirName == null) {// 目录如果为空
try {
tempFile = File.createTempFile(prefix, suffix);// 在默认文件夹下创建临时文件
return tempFile.getCanonicalPath();// 返回临时文件的路径
} catch (IOException e) {// 捕获异常
e.printStackTrace();
System.out.println("创建临时文件失败:" + e.getMessage());
return null;
}
} else {
// 指定目录存在
File dir = new File(dirName);// 创建目录
if (!dir.exists()) {
// 如果目录不存在则创建目录
if (CreateFile.createDir(dirName)) {
System.out.println("创建临时文件失败,不能创建临时文件所在的目录!");
return null;
}
}
try {
tempFile = File.createTempFile(prefix, suffix, dir);// 在指定目录下创建临时文件
return tempFile.getCanonicalPath();// 返回临时文件的路径
} catch (IOException e) {// 捕获异常
e.printStackTrace();
System.out.println("创建临时文件失败!" + e.getMessage());
return null;
}
}
} public static void main(String[] args) {
String dirName = "E:/createFile/";// 创建目录
CreateFile.createDir(dirName);// 调用方法创建目录
String fileName = dirName + "/file1.txt";// 创建文件
CreateFile.createFile(fileName);// 调用方法创建文件
String prefix = "temp";// 创建临时文件
String surfix = ".txt";// 后缀
for (int i = 0; i < 10; i++) {// 循环创建多个文件
System.out.println("创建临时文件: "// 调用方法创建临时文件
+ CreateFile.createTempFile(prefix, surfix, dirName));
}
}
}
java使用io创建文件与删除文件的工具类的更多相关文章
- Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录
Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator // ...
- java中如何创建带路径的文件
请教各位大侠了,java中如何创建带路径的文件,说明下 这个路径不存在 ------回答--------- ------其他回答(2分)--------- Java code File f = new ...
- java中File的delete()方法删除文件失败的原因
java中File的delete()方法删除文件失败的原因 学习了:http://hujinfan.iteye.com/blog/1266387 的确是忘记关闭了: 引用原文膜拜一下: 一般来说 ja ...
- linux中为什么删除文件比创建文件要快,读取文件和删除文件的过程是什么?
一.为什么删除文件比创建文件要快? 因为删除文件只是将bitmap位图表中将文件所占据的inode 和dacablock的使用状态从1变成0,相当于释放了这些快的使用权. 二.读取文件和删除文件的过程 ...
- Linux常用命令,查看树形结构、删除目录(文件夹)、创建文件、删除文件或目录、复制文件或目录(文件夹)、移动、查看文件内容、权限操作
5.查看树结构(tree) 通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度 格式:tree -L n [ ...
- C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)
之前做项目的时候要用到上传文件的功能,现在我总结一下,上传文件和删除文件的代码,在以后的使用的过程中也更方便查找. [HttpPost] public ActionResult EditUser() ...
- ASP FSO操作文件(复制文件、重命名文件、删除文件、替换字符串)
ASP FSO操作文件(复制文件.重命名文件.删除文件.替换字符串)FSO的意思是FileSystemObject,即文件系统对象.FSO对象模型包含在Scripting 类型库 (Scrrun.Dl ...
- 深入理解linux关闭文件和删除文件
背景介绍 最近看了linux系统编程(linux system programming)一书,结合深入理解linux内核(understanding the linux kernel)一书,深入理解了 ...
- Delphi阿里云对象存储OSS【支持上传文件、下载文件、删除文件、创建目录、删除目录、Bucket操作等】
作者QQ:(648437169) 点击下载➨Delphi阿里云对象存储OSS 阿里云api文档 [Delphi阿里云对象存储OSS]支持 获取Bucket列表.设置Bucket ...
- 无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。
无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘 ...
随机推荐
- OpenGL结合C#进行绘图
转自:http://www.cnblogs.com/wangshide/archive/2012/04/14/2447499.html 本人对OpenGL产生了浓厚的兴趣,又想学习一下C#这个语言,就 ...
- freemarker自定义标签报错(一)
freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Token manager error: freemarker.core.TokenMgr ...
- (六)java结构控制语句
选择语句,也叫条件分支语句:if--else和switch--case:其中if--else中的else是可选的,但是switch--case中的case是必须的. switch后的条件必须是 ...
- QueryError:Incorrect result size: expected 1, actual 0
1.错误描述 QueryError:Incorrect result size: expected 1, actual 0 2.错误原因 3.解决办法
- Windows10 + Matlab2013 mex C++ 调用gsl
最前面啰嗦一句,matlab默认编译c的编译器有点奇怪,会出现引用.h却找不到相应函数的问题,解决方法是把.c全部都改成.cpp!血的教训! 下面进入正题~~ 由于Matlab调用的C函数中引用了GS ...
- Mybatis if test 中int判断非空的坑
Mybatis 中,alarmType 是int类型.如果alarmType 为0的话,条件判断返回结果为false,其它值的话,返回true. <if test="alarmType ...
- 异常-----Java compiler level does not match解决方法
1, 先设置好jdk,需要确定 项目,eclipse/myeclipse,系统 用的是同一个版本的JDK,我系统中安装的JDK是1.7,所以我把eclipse的jdk成1.7 2, 进入 window ...
- 浅谈MySQL的优化
平时在开发中大多在写业务逻辑,很少关注于底层sql的执行效率,大多能交给batis的mapper做的就交给它去做. 然而这些天越来越发现,大家还是很愿意手写sql的,往往一段业务逻辑,可以用稍微复杂一 ...
- 关于设计SQL表的一些问题
1.设计问题: 当sql语句输入时,需要输入表名,表名内需要输入日期,而且譬如"第二天安装"这种,sql语句中有两个地方需要输入日期,一个是昨天,一个是今天,这种情况将输入日期的部 ...
- PHP+MySQL分页原理实现
功能简介:包含上一页.下一页.首页.尾页.跳转页面等功能. 编码寄语:化繁为简,则豁然开朗. 运行截图: 关键步骤: 创建数据库 CREATE TABLE `page` ( `ID` ) NOT NU ...