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创建文件与删除文件的工具类的更多相关文章

  1. Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录

    Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator // ...

  2. java中如何创建带路径的文件

    请教各位大侠了,java中如何创建带路径的文件,说明下 这个路径不存在 ------回答--------- ------其他回答(2分)--------- Java code File f = new ...

  3. java中File的delete()方法删除文件失败的原因

    java中File的delete()方法删除文件失败的原因 学习了:http://hujinfan.iteye.com/blog/1266387 的确是忘记关闭了: 引用原文膜拜一下: 一般来说 ja ...

  4. linux中为什么删除文件比创建文件要快,读取文件和删除文件的过程是什么?

    一.为什么删除文件比创建文件要快? 因为删除文件只是将bitmap位图表中将文件所占据的inode 和dacablock的使用状态从1变成0,相当于释放了这些快的使用权. 二.读取文件和删除文件的过程 ...

  5. Linux常用命令,查看树形结构、删除目录(文件夹)、创建文件、删除文件或目录、复制文件或目录(文件夹)、移动、查看文件内容、权限操作

    5.查看树结构(tree) 通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度 格式:tree -L n [ ...

  6. C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)

    之前做项目的时候要用到上传文件的功能,现在我总结一下,上传文件和删除文件的代码,在以后的使用的过程中也更方便查找. [HttpPost] public ActionResult EditUser() ...

  7. ASP FSO操作文件(复制文件、重命名文件、删除文件、替换字符串)

    ASP FSO操作文件(复制文件.重命名文件.删除文件.替换字符串)FSO的意思是FileSystemObject,即文件系统对象.FSO对象模型包含在Scripting 类型库 (Scrrun.Dl ...

  8. 深入理解linux关闭文件和删除文件

    背景介绍 最近看了linux系统编程(linux system programming)一书,结合深入理解linux内核(understanding the linux kernel)一书,深入理解了 ...

  9. Delphi阿里云对象存储OSS【支持上传文件、下载文件、删除文件、创建目录、删除目录、Bucket操作等】

    作者QQ:(648437169) 点击下载➨Delphi阿里云对象存储OSS             阿里云api文档 [Delphi阿里云对象存储OSS]支持 获取Bucket列表.设置Bucket ...

  10. 无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。

    无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘 ...

随机推荐

  1. STM32 下的库函数和寄存器操作比较

    以 led闪烁中的flashLed函数例子: 库函数操作简单,但是效率不如寄存器操作的高: 寄存器操作很复杂,因为要熟悉上百个寄存器,但是程序效率很高 /**下面是通过直接操作库函数的方式实现IO控制 ...

  2. GitHub 错误解决

    1. The file will have its original line endings in your working directory. git config --global core. ...

  3. xml文件的规则

    一,规则 1.1,样本 <?xml version="1.0" encoding="utf-8"?> <contactList> < ...

  4. WRT 版本说明

    std_generic 标准通用版nokaid 是不带XBOX支持的(Kai代表连接游戏平台到网络上.)virtual** 表示支持虚拟专用网络的版本VOIP 带VOIP表示支持网络电话的版本.meg ...

  5. POJ 3167 Layout(差分约束)

    题面 Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 ...

  6. [.NET]使用十年股价对比各种序列化技术

    1. 前言 上一家公司有搞股票,当时很任性地直接从服务器读取一个股票10年份的股价(还有各种指标)在客户端的图表上显示,而且因为是桌面客户端,传输的数据也是简单粗暴地使用Soap序列化.获取报价的接口 ...

  7. Java集合框架(一)

    原文  http://www.jianshu.com/p/e31fb2600e4f 集合类存放于java.util包中,集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就 ...

  8. memcached源码剖析——流程图

    参考: http://blog.csdn.net/column/details/memcached-src.html http://calixwu.com/2014/11/memcached-yuan ...

  9. 设计模式——原型模式(C++实现)

    #include <iostream> #include <string> using namespace std; class CPrototype { public: CP ...

  10. python 全栈开发,Day5

    python之函数初识 一.什么是函数? 现在有这么个情况:python中的len方法不让用了,你怎么办? 来测试一下'hello word' 的长度: 用for循环实现 s1 = "hel ...