package io.guangsoft.utils;

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.List; public class FilesUtil { //判断文件或文件夹是否存在
public static boolean isExit(String fileName) {
if (StringUtils.isNotEmpty(fileName)) {
File oldfile = new File(fileName);
if (oldfile.exists()) {
return true;
}
}
return false;
} //NIO方式复制文件
public static void copyFileNIO(File originFile, File destFile) {
File destDir = destFile.getParentFile();
if (!destDir.exists()) {
destDir.mkdirs();
}
FileInputStream fi = null;
FileOutputStream fo = null;
FileChannel in = null;
FileChannel out = null;
try {
fi = new FileInputStream(originFile);
fo = new FileOutputStream(destFile);
in = fi.getChannel();// 得到对应的文件通道
out = fo.getChannel();// 得到对应的文件通道
in.transferTo(0, in.size(), out);// 连接两个通道,并且从in通道读取,然后写入out通道
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} //根据文件路径复制文件
public static void copyFile(String oldPath, String newPath) {
try {
File oldfile = new File(oldPath);
if (oldfile.exists()) {
File destFile = new File(newPath);
copyFileNIO(oldfile, destFile);
}
} catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
} } //根据文件路径删除文件
public static void delFile(String filePathAndName) {
try {
String filePath = filePathAndName;
filePath = filePath.toString();
File myDelFile = new File(filePath);
myDelFile.delete();
} catch (Exception e) {
System.out.println("删除文件操作出错");
e.printStackTrace();
} } //移动文件
public static void moveFile(String oldPath, String newPath) {
copyFile(oldPath, newPath);
delFile(oldPath);
} //复制整个文件夹到指定目录
public static void copy(String src, String des) {
File file1 = new File(src);
String desDir = src.substring(src.lastIndexOf("\\") + 1, src.length());
File[] fs = file1.listFiles();
File file2 = new File(des + desDir);
if (!file2.exists()) {
file2.mkdirs();
}
if (fs != null) {
for (File f : fs) {
copyFile(f.getPath(), des + desDir + "\\" + f.getName()); // 调用文件拷贝的方法
}
}
} //递归删除目录下的所有文件及子目录下所有文件
public static boolean deleteDir(File dir) {
boolean ret = true;
if (dir.isDirectory()) {
String[] children = dir.list();
// 递归删除目录中的子目录
if (children != null) {
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
}
// 目录此时为空,可以删除
try{
ret = dir.delete();
if(!ret){ System.out.println("删除失败:"+dir.getName());
System.gc();//系统进行资源强制回收
ret = dir.delete();
}
}catch(Exception ex){
ret = false;
}finally{ }
return ret;
} //获取文件夹下所有文件路径
public static List<String> getFilePathList(String dirPath) {
List<String> filePathlist = new ArrayList<String>();
File dir = new File(dirPath);
File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
if (files != null) {
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) { // 判断是文件还是文件夹
getFilePathList(files[i].getAbsolutePath()); // 获取文件绝对路径
} else {
String strFileName = files[i].getAbsolutePath();
filePathlist.add(strFileName);
}
}
}
return filePathlist;
} }

Java操作文件Util的更多相关文章

  1. java操作文件的创建、删除、遍历

    java操作文件的创建.删除.遍历: package test; import java.io.File; import java.io.IOException; import java.util.A ...

  2. Java操作文件夹的工具类

    Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...

  3. Java操作文件

    import java.io.File; import java.io.IOException; import java.nio.file.*; import java.nio.file.attrib ...

  4. java——操作文件

    Java文件操作,共实现了文件复制(单个文件和多层目录文件),文件移动(单个文件和多层目录文件),文件删除(单个文件和多层目录文件),文件压缩 (单个文件),文件解压(单个文件),文件分割(将一个大文 ...

  5. java操作文件常用的 IO流对象

    1.描述:流是字节数据或字符数据序列.Java采用输入流对象和输出流对象来支持程序对数据的输入和输出.输入流对象提供了数据从源点流向程序的管道,程序可以从输入流对象读取数据:输出流对象提供了数据从程序 ...

  6. Java操作文件那点事

    刚开始学Java时候,一直搞不懂Java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂.而且没有结合到java7 的最新技术,所以自己结合API来整理一下,有错的话请指正,也希 ...

  7. Java操作文件转码

    package downloadTest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...

  8. java操作文件流对象

    所有流对象 InputStream 字节流         FileInputStream 字节流 专门读写非文本文件的         BufferedInputStream 高效流 OutPutS ...

  9. Java删除文件夹和文件

    转载自:http://blog.163.com/wu_huiqiang@126/blog/static/3718162320091022103144516/ 以前在javaeye看到过关于Java操作 ...

随机推荐

  1. js和java的参数传递方式实际都是一样的,都是按值传递

    只不过要注意的是字符串类型在java中是对象,在js是基本数据类型,作为参数传递的时候是拷贝值,

  2. mysql数据库字段类型详解

    MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述. ...

  3. Element-ui的表单中怎么添加正则校验

    1. 以中国大陆手机号验证为例 // 这是组价的代码 <el-form-item prop="mobile"> <el-input type="text ...

  4. [LeetCode] 78. Subsets tag: backtracking

    Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solut ...

  5. 解决使用window.history.back(),返回上一页后,页面不刷新问题

    window.onpageshow = function(event) { if (event.persisted) { window.location.reload(); } }

  6. cocos2d-x JS 随机数

    random4 : function (n, m){ var random = Math.floor(Math.random()*(m-n+1)+n); return random;},

  7. Oracle 11g快速收集全库统计信息

    环境:Oracle 11.2.0.4 采用并行的方式,快速收集全库统计信息,多用于跨版本升级之后,对全库的统计信息重新进行快速收集: --开启计时 set timing on --设置并行收集 exe ...

  8. 北京时间转为时间搓 标准时间转为UTC

    int standard_to_stamp(char *str_time)  {          struct tm stm;          int iY, iM, iD, iH, iMin, ...

  9. React项目中使用Mobx状态管理(二)

    并上一节使用的是普通的数据状态管理,不过官方推荐使用装饰器模式,而在默认的react项目中是不支持装饰器的,需要手动启用. 官方参考 一.添加配置 官方提供了四种方法, 方法一.使用TypeScrip ...

  10. spark2.2.1 sql001

    package sql import org.apache.spark.sql.SparkSession import org.apache.spark.SparkContext object Par ...