多平台统一管理软件接口,如何实现多平台统一管理软件接口
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~