JavaSE文件操作工具类FileUtil详解

网友投稿 297 2022-12-29


JavaSE文件操作工具类FileUtil详解

本文实例为大家分享了javaSE文件操作工具类FileUtil的具体代码,供大家参考,具体内容如下

http://

先展示一下文件工具类中打印文件夹树形结构的结果:

代码如下:

package com.mjq.iotest;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FilenameFilter;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* 练习File API

* @author Administrator

*

*/

public class FileUtil

{

/**

* 单例模式

*//*

private static FileUtil instance = null;

private FileUtil()

{

}

public static FileUtil getInstance()

{

synchronized (FileUtil.class)

{

if(null == instance)

{

instance = new FileUtil();

}

}

return instance;

}*/

/**

* 创建文件/文件夹

* @param path 路径

* @return 是否创建成功

* @throws Exception

*/

public static boolean creatFile(String path) throws Exception

{

if(null == path || path.length() == 0)

{

throw new Exception("路径不正确!");

}

File file = new File(path);

//如果路径存在,则不创建

if(!file.exists())

{

if(file.isDirectory())

{

//文件夹

file.mkdirs();

// file.mkdir(); 创建单层路径 file.mkdirs() 可以创建多层路径

return true;

}

else

{

//文件 先创建父路径,然后再创建文件

String dirPath = path.substring(0,path.lastIndexOf(File.separator));

File dirFile = new File(dirPath);

if(!dirFile.exists())

{

dirFile.mkdirs();

}

File fileFile = new File(path);

try {

fileFile.createNewFile();

return true;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

else

{

throw new Exception("文件已存在!");

}

return false;

}

/**

* 删除文件/文件夹及其中的所有子文件夹和文件

* @return

* @throws Exception

*/

public static void deleteFile(String filePath) throws Exception

{

if(null == filePath || filePath.length() == 0)

{

throw new Exception("filePath:"+filePath+"路径不正确!");

}

File file = new File(filePath);

if(!file.exists())

{

throw new Exception("filePath:"+filePath+"文件不存在!");

}

if(file.isFile())

{

file.delete();

}

if(file.isDirectory())

{

File [] childFiles = file.listFiles();

if(null != childFiles && childFiles.length!=0)

{

//循环递归删除

for(File childFile:childFiles)

{

deleteFile(childFile.getAbsolutePath());

}

}

file.delete();

}

}

/**

* 获取文件基本信息

* @param file

*/

public static void getBaseInfo(File file)

{

//文件绝对路径 文件大小 文件是否是文件夹 文件是否是文件 文件是否可读 文件是否可写 文件是否可执行 文件修改时间 文件父目录名

//文件所在分区总大小 未使用大小 可用大小

System.out.println("文件基本信息如下:");

System.out.println("文件绝对路径:"+file.getAbsolutePath());

System.out.println("文件名称:"+file.getName());

System.out.println("文件大小:"+file.length());

System.out.println("文件是否是文件夹:"+file.isDirectory());

System.out.println("文件是否是文件:"+file.isFile());

System.out.println("文件是否可读:"+file.canExecute());

System.out.println("文件是否可读:"+file.canRead());

System.out.println("文件是否可写:"+file.canWrite());

System.out.println("文件修改时间:"+file.lastModified());

System.out.println("文件父目录名称:"+file.getParent());

System.out.println("文件所在分区大小:"+file.getTotalSpace()/1024/1024+"Mb");

System.out.println("文件所在分区未使用大小:"+file.getFreeSpace()/1024/1024+"Mb");

System.out.println("文件所在分区可用大小:"+file.getUsableSpace()/1024/1024+"Mb");

System.out.println("文件夹结构如下图:");

try {

printFileStructure(file,1);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 打印文件路径

* @param file

* @param deepth

* @throws Exception

*/

public static void printFileStructure(File file ,int deepth) throws Exception

{

if(!file.exists())

{

throw new Exception("文件路径不存在!");

}

if(!file.isHidden())

{

if(file.isFile())

{

//直接打印

printFile(file,deepth);

return;

}

if(file.isDirectory())

{

//先打印自身,然后递归打印子文件夹和子文件

printFile(file,deepth);

File [] childFiles = file.listFiles();

if(null != childFiles && childFiles.length>0)

{

deepth++;

for(File childFile : childFiles)

{

printFileStructure(childFile ,deepth);

}

}

}

}

}

/**

* 打印文件夹树形结构

* @param file

* @param deepth

*/

public static void printFile(File file ,int deepth)

{

String name = file.getName();

StringBuffer sb = new StringBuffer();

StringBuffer tempSb = new StringBuffer();

for(int i =0;i

{

tempSb.append(" ");

}

sb.append(tempSb);

sb.append("|"+"\n");

sb.append(tempSb);

sb.append("------"+name);

System.out.println(sb.toString());

}

/**

* 删除特定的文件

* @return

* @throws Exception

*/

public static void deleteNamedFile(String filePath,String regex) throws Exception

{

File file = new File(filePath);

if(!file.exists())

{

throw new Exception("文件不存在!");

}

//匿名内部类实现 FilenameFilter 接口种的accept()方法,使用在正则表达式进行匹配

//accept(File dir,String name) 使用当前文件对象 和 当前文件的名称 进行文件是否符合要求的标准判断;

/*

=======================================================================================

File file = new File(".");

String [] nameList = file.list((dir,name) -> name.endsWith(".java") || new File(name).isDirectory());

for(String name : nameList)

{

System.out.println(name);

}

========================================================================================

这里使用Lamda表达式实现FilenameFilter 接口种的accept()方法

*/

File[] fileList = file.listFiles(new FilenameFilter(){

/**

* 使用正则表达式进行匹配

* @param regexStr

* @return

*/

private boolean regexMatch(String name,String regexStr)

{

Pattern pattern = Pattern.compile(regexStr);

Matcher matcher = pattern.matcher(name);

return matcher.find();

}

@Override

public boolean accept(File dir, String name) {

return regexMatch(name,regex);

}});

if(null != fileList && fileList.length>0)

{

for(File filteredFile: fileList)

{

filteredFile.delete();

}

}

}

/**

* 复制文件/文件夹及其中的所有子文件夹和文件

* @return

*/

public static void copyFile(String srcFilePath,String destFilePath)

{

InputStream is = null;

OutputStream os = null;

try {

if(creatFile(destFilePath))

{

File srcFile = new File(srcFilePath);

File destFile = new File(destFilePath);

is = new FileInputStream(srcFile);

os = new FileOutputStream(destFile);

byte [] buffer = new byte[2048];

int temp = 0;

while((temp = is.read(buffer))!=-1)

{

os.write(buffer, 0, temp);

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally

{

//java 7 以后可以不关闭,可以自动关闭

if(null != os)

{

try {

os.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(null != is)

{

try {

is.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

/**

* 复制指定地文件

* @return

*//*

public static boolean copyNamedFile()

{

}

*//**

* 剪切文件/文件夹及其中的所有子文件夹和文件

* @return

*/

public static void cutFile(String srcFilePath,String destFilePath)

{

//先复制,再删除

try {

copyFile( srcFilePath, destFilePath);

deleteFile(srcFilePath);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 剪切文件/文件夹及其中的所有子文件夹和文件

* @return

*//*

public static boolean cutNamedFile()

{

}

*//**

* 文件压缩

* @param destPath

* @param fileFormats

* @param srcFile

* @return

*//*

public static boolean fileCompress(String destPath,String fileFormats,String srcFile,String regex)

{

}

*//**

* 文件解压缩

* @param destPath

* @param srcFile

* @return

*//*

public static boolean fileDecompress(String destPath,String srcPath)

{

}

*//**

* 文件加密

* @param srcPath

* @param destPath

* @param encryptKey

* @param encryptAlgorithm

* @return

*//*

public static boolean fileEncrypt(String srcPath,String destPath,String encryptKey,String encryptAlgorithm)

{

}

*//**

* 文件解密

* @param srcPath

* @param destPath

* @param encryptKey

* @param encryptAlgorithm

* @return

*//*

public static boolean fileDecrypt(String srcPath,String destPath,String encryptKey,String encryptAlgorithm)

{

}*/

public static void main(String [] args)

{

File file = new File("D:\\北邮人下载\\书籍\\编译原理");

getBaseInfo(file);

try {

/*deleteNamedFile("D:\\北邮人下载\\书籍",".pdf");*/

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTracehttp://();

}

/*cutFile("F:\\抢票软件\\12306Bypass.exe","F:\\抢票软件\\12306Bypass\\12306Bypass.exe");*/

}

}

{

tempSb.append(" ");

}

sb.append(tempSb);

sb.append("|"+"\n");

sb.append(tempSb);

sb.append("------"+name);

System.out.println(sb.toString());

}

/**

* 删除特定的文件

* @return

* @throws Exception

*/

public static void deleteNamedFile(String filePath,String regex) throws Exception

{

File file = new File(filePath);

if(!file.exists())

{

throw new Exception("文件不存在!");

}

//匿名内部类实现 FilenameFilter 接口种的accept()方法,使用在正则表达式进行匹配

//accept(File dir,String name) 使用当前文件对象 和 当前文件的名称 进行文件是否符合要求的标准判断;

/*

=======================================================================================

File file = new File(".");

String [] nameList = file.list((dir,name) -> name.endsWith(".java") || new File(name).isDirectory());

for(String name : nameList)

{

System.out.println(name);

}

========================================================================================

这里使用Lamda表达式实现FilenameFilter 接口种的accept()方法

*/

File[] fileList = file.listFiles(new FilenameFilter(){

/**

* 使用正则表达式进行匹配

* @param regexStr

* @return

*/

private boolean regexMatch(String name,String regexStr)

{

Pattern pattern = Pattern.compile(regexStr);

Matcher matcher = pattern.matcher(name);

return matcher.find();

}

@Override

public boolean accept(File dir, String name) {

return regexMatch(name,regex);

}});

if(null != fileList && fileList.length>0)

{

for(File filteredFile: fileList)

{

filteredFile.delete();

}

}

}

/**

* 复制文件/文件夹及其中的所有子文件夹和文件

* @return

*/

public static void copyFile(String srcFilePath,String destFilePath)

{

InputStream is = null;

OutputStream os = null;

try {

if(creatFile(destFilePath))

{

File srcFile = new File(srcFilePath);

File destFile = new File(destFilePath);

is = new FileInputStream(srcFile);

os = new FileOutputStream(destFile);

byte [] buffer = new byte[2048];

int temp = 0;

while((temp = is.read(buffer))!=-1)

{

os.write(buffer, 0, temp);

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally

{

//java 7 以后可以不关闭,可以自动关闭

if(null != os)

{

try {

os.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(null != is)

{

try {

is.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

/**

* 复制指定地文件

* @return

*//*

public static boolean copyNamedFile()

{

}

*//**

* 剪切文件/文件夹及其中的所有子文件夹和文件

* @return

*/

public static void cutFile(String srcFilePath,String destFilePath)

{

//先复制,再删除

try {

copyFile( srcFilePath, destFilePath);

deleteFile(srcFilePath);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 剪切文件/文件夹及其中的所有子文件夹和文件

* @return

*//*

public static boolean cutNamedFile()

{

}

*//**

* 文件压缩

* @param destPath

* @param fileFormats

* @param srcFile

* @return

*//*

public static boolean fileCompress(String destPath,String fileFormats,String srcFile,String regex)

{

}

*//**

* 文件解压缩

* @param destPath

* @param srcFile

* @return

*//*

public static boolean fileDecompress(String destPath,String srcPath)

{

}

*//**

* 文件加密

* @param srcPath

* @param destPath

* @param encryptKey

* @param encryptAlgorithm

* @return

*//*

public static boolean fileEncrypt(String srcPath,String destPath,String encryptKey,String encryptAlgorithm)

{

}

*//**

* 文件解密

* @param srcPath

* @param destPath

* @param encryptKey

* @param encryptAlgorithm

* @return

*//*

public static boolean fileDecrypt(String srcPath,String destPath,String encryptKey,String encryptAlgorithm)

{

}*/

public static void main(String [] args)

{

File file = new File("D:\\北邮人下载\\书籍\\编译原理");

getBaseInfo(file);

try {

/*deleteNamedFile("D:\\北邮人下载\\书籍",".pdf");*/

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTracehttp://();

}

/*cutFile("F:\\抢票软件\\12306Bypass.exe","F:\\抢票软件\\12306Bypass\\12306Bypass.exe");*/

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于系统接口设计模式的信息
下一篇:微服务注册中心和服务网关(微服务中服务注册和发现)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~