java中文件的操作
来源:互联网 发布:access数据库编程 编辑:程序博客网 时间:2024/05/11 16:04
对文件的操作,大家都可能会写一些操作,其实Apache中FileUtils已经做了很好的封装,今天将常用的操作记录如下:
(1)保留规定的前几个月的记录如下:
- /**
- * 清理目录中过期的文件
- *
- * @param dayCount
- * :保存时间天数
- * @param dirPath
- * :目录路径
- * @return
- */
- @SuppressWarnings("unchecked")
- private static boolean deleteFiles(String dirPath, String backupPath, int days, boolean isBackup) {
- // 计算备份日期,备份该日期之前的文件
- Date pointDate = new Date();
- long timeInterval = pointDate.getTime() - convertDaysToMilliseconds(days);
- pointDate.setTime(timeInterval);
- // 是否进行备份
- if (isBackup) {
- if (!backUpFiles(dirPath, backupPath, pointDate)) {
- System.out.println(" Backup failed: " + dirPath);
- return false;
- }
- }
- // 设置文件过滤条件
- IOFileFilter timeFileFilter = FileFilterUtils.ageFileFilter(pointDate, true);
- IOFileFilter fileFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, timeFileFilter);
- // 删除符合条件的文件
- File deleteRootFolder = new File(dirPath);
- Iterator itFile = FileUtils.iterateFiles(deleteRootFolder, fileFiles, TrueFileFilter.INSTANCE);
- while (itFile.hasNext()) {
- File file = (File) itFile.next();
- boolean result = file.delete();
- if (!result) {
- LogEx.error("Failed to delete file of :" + file);
- return false;
- }
- }
- // 清理空的文件夹
- File[] forderList = deleteRootFolder.listFiles();
- if (forderList != null && forderList.length > 0) {
- for (int i = 0; i < forderList.length; i++) {
- deleteEmptyDir(forderList[i]);
- }
- }
- return true;
- }
- /**
- * 备份删除文件到指定的目录 ,目录格式:yyyy_MM_dd_bak
- *
- * @param srcDir
- * :源文件路径
- * @param destDir
- * :目标文件路径
- * @param dayCount
- * :时间间隔,备份该时间之前的数据
- * @return
- */
- private static boolean backUpFiles(String srcDir, String destDir, Date pointDate) {
- try {
- // 设置备份文件夹格式YYYY_MM_dd_bak
- SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd");
- String folderName = format.format(new Date()) + "_bak";
- File resFile = new File(srcDir);
- File distFile = new File(destDir + File.separator + folderName);
- // 文件过滤条件
- IOFileFilter timeFileFilter = FileFilterUtils.ageFileFilter(pointDate, true);
- IOFileFilter fileFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, timeFileFilter);
- // 复制文件目录
- FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, fileFiles);
- FileUtils.copyDirectory(resFile, distFile, filter, true);
- } catch (IOException e) {
- e.printStackTrace();
- LogEx.error("Failed to backupFile:" + e.getMessage());
- return false;
- }
- return true;
- }
- /**
- * 天与毫秒的转换
- *
- * @param days
- * @return
- */
- private static long convertDaysToMilliseconds(int days) {
- return days * 24L * 3600 * 1000;
- }
2、清理所有的文件夹
- private static void deleteEmptyDir(File dir) {
- if (dir.isDirectory()) {
- File[] fs = dir.listFiles();
- if (fs != null && fs.length > 0) {
- for (int i = 0; i < fs.length; i++) {
- File tmpFile = fs[i];
- if (tmpFile.isDirectory()) {
- deleteEmptyDir(tmpFile);
- }
- if (tmpFile.isDirectory() && tmpFile.listFiles().length <= 0) {
- tmpFile.delete();
- }
- }
- }
- if (dir.isDirectory() && dir.listFiles().length == 0) {
- dir.delete();
- }
- }
- }
- Java中文件的操作
- Java中文件的操作
- JAVA中文件的操作
- java中文件的操作
- java中文件的操作
- Java中文件的操作
- Java中文件操作
- java中文件操作
- java中文件操作
- java中文件操作的小例子
- Java中文件的复制操作
- java开发中文件操作的问题!!
- Java中IO中文件的操作
- Java中文件的读写操作
- java中文件操作大全
- java中文件操作大全
- java中文件操作大全
- JAVA中文件操作大全
- 再也不能这样活 再也不能那样过
- CString,int char*之间的转换
- windows 控件编程
- jQuery 选择表格(table)里的行和列
- WINDOWS API编程乱叹
- java中文件的操作
- C++指针(2012.06.26&06.27)
- 小公司的管理之惑
- ubuntu12.04 root登录
- IIS 上传文件大小配置
- 关于TPM 的Seal 和 Unseal
- EGORefreshTableHeaderView —— UITableView下拉刷新页面的实现
- Hibernate各种主键生成策略与配置详解
- android进程和线程模型