Java创建、重命名、删除文件和文件夹(转)
Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了。如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归。
下面是的一个解决方案,借助Apache Commons IO工具包(commons-io-1.1.jar)来简单实现文件(夹)的复制、移动、删除、获取大小等操作。
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.*;
/**
* 文件工具箱
*
* @author leizhimin 2008-12-15 13:59:16
*/
public final class FileToolkit {
private static final Log log = LogFactory.getLog(FileToolkit.class);
/**
* 复制文件或者目录,复制前后文件完全一样。
*
* @param resFilePath 源文件路径
* @param distFolder 目标文件夹
* @IOException 当操作发生异常时抛出
*/
public static void copyFile(String resFilePath, String distFolder) throws IOException {
File resFile = new File(resFilePath);
File distFile = new File(distFolder);
if (resFile.isDirectory()) {
FileUtils.copyDirectoryToDirectory(resFile, distFile);
} else if (resFile.isFile()) {
FileUtils.copyFileToDirectory(resFile, distFile, true);
}
}
/**
* 删除一个文件或者目录
*
* @param targetPath 文件或者目录路径
* @IOException 当操作发生异常时抛出
*/
public static void deleteFile(String targetPath) throws IOException {
File targetFile = new File(targetPath);
if (targetFile.isDirectory()) {
FileUtils.deleteDirectory(targetFile);
} else if (targetFile.isFile()) {
targetFile.delete();
}
}
/**
* 移动文件或者目录,移动前后文件完全一样,如果目标文件夹不存在则创建。
*
* @param resFilePath 源文件路径
* @param distFolder 目标文件夹
* @IOException 当操作发生异常时抛出
*/
public static void moveFile(String resFilePath, String distFolder) throws IOException {
File resFile = new File(resFilePath);
File distFile = new File(distFolder);
if (resFile.isDirectory()) {
FileUtils.moveDirectoryToDirectory(resFile, distFile, true);
} else if (resFile.isFile()) {
FileUtils.moveFileToDirectory(resFile, distFile, true);
}
} /**
* 重命名文件或文件夹
*
* @param resFilePath 源文件路径
* @param newFileName 重命名
* @return 操作成功标识
*/
public static boolean renameFile(String resFilePath, String newFileName) {
String newFilePath = StringToolkit.formatPath(StringToolkit.getParentPath(resFilePath) + "/" + newFileName);
File resFile = new File(resFilePath);
File newFile = new File(newFilePath);
return resFile.renameTo(newFile);
}
/**
* 读取文件或者目录的大小
*
* @param distFilePath 目标文件或者文件夹
* @return 文件或者目录的大小,如果获取失败,则返回-1
*/
public static long genFileSize(String distFilePath) {
File distFile = new File(distFilePath);
if (distFile.isFile()) {
return distFile.length();
} else if (distFile.isDirectory()) {
return FileUtils.sizeOfDirectory(distFile);
}
return -1L;
}
/**
* 判断一个文件是否存在
*
* @param filePath 文件路径
* @return 存在返回true,否则返回false
*/
public static boolean isExist(String filePath) {
return new File(filePath).exists();
}
/**
* 本地某个目录下的文件列表(不递归)
*
* @param folder ftp上的某个目录
* @param suffix 文件的后缀名(比如.mov.xml)
* @return 文件名称列表
*/
public static String[] listFilebySuffix(String folder, String suffix) {
IOFileFilter fileFilter1 = new SuffixFileFilter(suffix);
IOFileFilter fileFilter2 = new NotFileFilter(DirectoryFileFilter.INSTANCE);
FilenameFilter filenameFilter = new AndFileFilter(fileFilter1, fileFilter2);
return new File(folder).list(filenameFilter);
}
/**
* 将字符串写入指定文件(当指定的父路径中文件夹不存在时,会最大限度去创建,以保证保存成功!)
*
* @param res 原字符串
* @param filePath 文件路径
* @return 成功标记
*/
public static boolean string2File(String res, String filePath) {
boolean flag = true;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
File distFile = new File(filePath);
if (!distFile.getParentFile().exists()) distFile.getParentFile().mkdirs();
bufferedReader = new BufferedReader(new StringReader(res));
bufferedWriter = new BufferedWriter(new FileWriter(distFile));
char buf[] = new char[1024]; //字符缓冲区
int len;
while ((len = bufferedReader.read(buf)) != -1) {
bufferedWriter.write(buf, 0, len);
}
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
}
http://xiaoxuejie.iteye.com/blog/1325331
Java创建、重命名、删除文件和文件夹(转)的更多相关文章
- python学习笔记--文件重命名,删除及文件夹
文件重命名 import os os.rename('123.txt','456.txt') 删除文件 >>> import os >>> os.remove('4 ...
- java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
欢迎加入刚建立的社区:http://t.csdn.cn/Q52km 加入社区的好处: 1.专栏更加明确.便于学习 2.覆盖的知识点更多.便于发散学习 3.大家共同学习进步 3.不定时的发现金红包(不多 ...
- IDEA工具java开发之 代码重构Refactor 重命名 删除移动复制 生成变量 抽取方法
一.重命名 用shift + F6 或者右键单击 二.抽取方法 .三.生成变量 . 四.文件移动复制和删除 可以右键
- Perl重命名当前目录下的文件
下载的zip包解压后,中文都变成了乱码,就写了个脚本重命名文件. use strict; use warnings; use Cwd; sub main { my $dir = getcwd(); o ...
- JAVA创建并写入内容到xlsx文件
首先需要在web项目中导入jxl.jar 包 //action中代码 public String downloadReport(){ String path = System.getPr ...
- mac文件夹怎么重命名?苹果电脑文件夹重命名快捷键
windows系统下给文件夹重命名相信很多朋友都很熟悉,那么Mac OS系统怎么给文件重命名呢,相信很多刚刚入手Mac OS系统的亲们都会有次疑问,下面小编告诉你Mac OS系统的文件夹到底要怎样才能 ...
- java package 重命名时注意事项
如果要对包重命名时,需要关注以下方面: 1. java关联类里的重命名(这个一般通过开发工具会自动修正,如eclipse) 2.配置文件,如原先配置为com.abc,现在更名为com.abc123,这 ...
- 用Java批量重命名文件
要事先在C盘里创建“照片”和“照片1”两个文件夹 1import java.io.*; public class Jack { public static void main(String[] arg ...
- java如何重命名文件?
/** * 修改文件名 * @param oldFilePath 原文件路径 * @param newFileName 新文件名称 * @param overriding 判断标志(如果存在相同名的文 ...
- 批量重命名B站下载文件
将B站下载的文件统一修改文件名 事情来由 事情是这样的,我在B站上发现一个教程,看了一下,非常不错,于是想下载下来(免得B站和谐). 问题就是这样来了,我手机没多少内存,下载后下发现文件在手机中都是以 ...
随机推荐
- 多文件上传组件FineUploader使用心得
原文 多文件上传组件FineUploader使用心得 做Web开发的童鞋都知道,需要经常从客户端上传文件到服务端,当然,你可以使用<input type="file"/> ...
- maven setting配置
<?xml version="1.0" encoding="UTF-8"?> <!--Licensed to the Apache Softw ...
- Use GraceNote SDK in iOS(二)获取音乐的完整信息
在需求彻底明朗化,外加从MusicFans转到GraceNote,再从GraceNote的GNSDK转到iOS SDK后,最终完毕了在iOS上通过音乐的部分信息获取完整信息的功能了.(好吧,我承认是相 ...
- 二维码闪电登录流程详解,附demo(2/2)
上篇文章,我们重点介绍了一下二维码登录的流程,以及每个“角色”要做的事情,下面我们重点分析TV角色所做的工作. TV主要完成二维码图片显示,以及websocket请求.下面重点说一下这两点. 1. B ...
- 运行tomcat6w.exe ,提示 指定的服务未安装 unable to open the service 'tomcat66'
错误:运行tomcat6w.exe ,提示 指定的服务未安装 unable to open the service 'tomcat6'(我用的是官网下载的解压版) 解决方法: 打开命令行提示符窗口=& ...
- 【Nginx笔记】nginx配置文件具体解释
本文主要对nginx的配置做重点说明,关于nginx的其他基本概念.建议參考官网描写叙述.这里推荐Nginx Beginner's Guide这篇文档.对刚開始学习的人高速认识nginx非常有帮助. ...
- Qt Quick鼠标事件处理、键盘、计时器
在<Qt Quick 事件处理之信号与槽>中介绍了 QML 中怎样使用内建类型的信号以及怎样自己定义信号,这次我们来看看怎样处理鼠标.键盘.定时器等事件.这些时间在处理时,一般是通过信号来 ...
- Swift - 多层无缝循环滚动背景(SpriteKit游戏开发)
在游戏开发中,比如跑酷游戏.我们需要实现背景的无限循环滚动,来营造运动的效果.除了单层的背景滚动,还有视差滚动. 视差滚动是指让多层背景以不同的速度移动,形成立体的效果,从而带来非常出色的视觉体验. ...
- 使用 boost 进行 CRC32 校验
使用 boost 进行 CRC32 校验 - firebird321的专栏 - 博客频道 - CSDN.NET 使用 boost 进行 CRC32 校验 分类: 文件操作 2008-06-06 18: ...
- Swift - 类型判断is 与 类型转换as
在Swift中,通常使用is和as操作符来实现类型检查和转换.下面通过样例来演示使用方法,首先定义几个类. 1 2 3 4 5 6 7 8 9 10 11 //基类,人类 class Human{ } ...