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. 2019.03.30 图解HTTP

    文章来源<图解HTTP> 第一章 了解Web及网络基础 你有想过当你在浏览器(web browser)的地址栏上输入URL时,Web页面是如何实现的吗? 嗯,好像也没想过 web使用一种名 ...

  2. JAVA比较两个List集合的方法

    import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.H ...

  3. TL-WAR1200L V1.0升级软件20170609

         TL-WAR1200L_V1.0升级软件20170609.part1.rar  TL-WAR1200L_V1.0升级软件20170609.part2.rar TP-LINK WVR& ...

  4. xshell 禁用铃声 提示音

    xshell 的铃声在操作时比较烦,所以通常会关闭. 操作方法: 工具 > 选项 > 高级, 在“终端”选项下的 “禁用铃声” 前面打上勾, 确定即可.

  5. Android提权漏洞CVE-2014-7920、CVE-2014-7921

  6. jmeter4.0 执行jmeter_server.bat报错

    Jmeter分布式执行1.-------------------------------Jmeter4.0  执行jmeter_server.bat   报错,是由于4.0要手工生成密钥 bin目录下 ...

  7. Linux基础(六) Vim之vundle插件

    背景 Vim缺乏默认的插件管理器,所有插件的文件都散布在~/.vim下的几个文件夹中,插件的安装与更新与删除都需要自己手动来,既麻烦费事,又可能出现错误. Vundle简介 Vundle 是 Vim ...

  8. Selenium基础知识(九)验证码

    关于Selenium处理验证码总结下: 1.去掉验证码(这个为了测试,去掉可能性不大) 2.万能验证码(让开发给做一个万能验证码,可能性也不大) 3.OCR光学识别,python包Python-tes ...

  9. 用int还是用Integer?

    昨天例行code review时大家有讨论到int和Integer的比较和使用. 这里做个整理,发表一下个人的看法.   [int和Integer的区别] int是java提供的8种原始类型之一,ja ...

  10. unity3d对象池的使用

    说对象池之前首先来看看单例类和单例脚本的区别.这里有介绍 http://blog.csdn.net/lzhq1982/article/details/12649281 使用对象池的好处是不用每次都创建 ...