Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.penglecode.common.util;
  
  import java.io.File;
  import java.util.UUID;
  
文件操作工具类

Author(s):
pengpeng
Version:
1.0
Date:
2014年7月20日 上午12:03:21
 
 public class FileUtils {

默认的标准推荐使用的文件路径分隔符
 
     public static final String DEFAULT_STANDARD_FILE_DELIMITER = "/";

    
默认的不推荐使用的文件路径分隔符
 
     public static final String DEFAULT_AGAINST_FILE_DELIMITER = "\\";
    
    
默认的http协议地址头
 
     public static final String DEFAULT_PREFIX_HTTP_PROTOCOL = "http://";
    
    
默认文件copy缓冲区大小
 
     public static final int FILE_COPY_BUFFER_SIZE = 20 * 1024 * 1024;

    

纠正不标准的文件路径分隔符 如:\,\\,\\\,//,/// -> /

Parameters:
path
Returns:
 
     public static String formatFilePath(String path){
         if (!StringUtils.isEmpty(path)) {
         	boolean startWithHttpProtocol = path.toLowerCase().startsWith();
         	if(startWithHttpProtocol){
         		path = path.substring(.length());
         	}
         	// 将一个或多个“\”转化成“/”
         	path = path.replaceAll("\\\\{1,}""/");
             // 将多个“/”转化成一个“/”
         	path = path.replaceAll("\\/{2,}""/");
         	if(startWithHttpProtocol){
         		path =  + path;
         	}
         }
         return path;
     }
    
    

获取文件格式,小写,例如: txt、jpg等

Parameters:
imageFileName
Returns:
 
     public static String getFileFormat(String fileName) {
         Assert.hasText(fileName"Parameter 'fileName' can not be empty!");
         return fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
     }
    
    

根据文件路径获取文件名称

Parameters:
filePath
Returns:
 
     public static String getFileName(String filePath) {
     	Assert.hasText(filePath"Parameter 'filePath' can not be empty!");
     	filePath = formatFilePath(filePath);
     	return filePath.substring(filePath.lastIndexOf() + 1);
     }
    
    

获取文件大小,单位字节

Parameters:
fileFullPath
Returns:
Throws:
java.io.IOException
 
     public static int getFileSize(String fileFullPaththrows IOException {
     	Assert.hasText(fileFullPath"Parameter 'fileFullPath' can not be empty!");
         int size = 0;
         fileFullPath = formatFilePath(fileFullPath);
         File file = new File(fileFullPath);
        if (file.exists() && !isDirectory(fileFullPath)) {
            FileInputStream fis = new FileInputStream(file);
            size = fis.available();
            if (fis != null) {
                fis.close();
            }
        }
        return size;
    }
    
    

获取系统临时目录

Returns:
    public static String getTempDirectoryPath() {
        String path = System.getProperty("java.io.tmpdir");
        if(!StringUtils.isEmpty(path)){
        	return formatFilePath(path);
        }
        return path;
    }
    
    

获取用户目录

Returns:
    public static String getUserDirectoryPath() {
        String path = System.getProperty("user.home");
        if(!StringUtils.isEmpty(path)){
        	return formatFilePath(path);
        }
        return path;
    }
    
    

根据文件路径获取File对象

Parameters:
fullFilePath
Returns:
    public static File getFile(String filePath) {
    	Assert.hasText(filePath"Parameter 'filePath' can not be empty!");
    	filePath = formatFilePath(filePath);
        return new File(filePath);
    }
    
    

创建文件目录如果需要创建

Parameters:
filePath
Returns:
true-创建了新目录;false-没有创建新目录
Throws:
java.lang.Exception
    public static boolean mkDirIfNecessary(String filePath) {
        filePath = formatFilePath(filePath);
        File dirFile = new File(getFileDirectory(filePath));
        if (!dirFile.exists()) {
            dirFile.mkdirs();
            return true;
        }
        return false;
    }
    
    

根据文件路径判断该路径表示的是文件还是目录

Parameters:
filePath
Returns:
    public static boolean isDirectory(String filePath) {
        if (!StringUtils.isEmpty(filePath)) {
        	filePath = formatFilePath(filePath);
            int index1 = filePath.lastIndexOf('.');
            if (index1 == -1) {
                return true;
            } else {
                int index2 = filePath.lastIndexOf() == -1 ? filePath.lastIndexOf() : filePath.lastIndexOf();
                if (index2 != -1) {
                    if (index1 > index2) {
                        return false;
                    } else {
                        return true;
                    }
                } else {
                    return false;
                }
            }
        }
        return false;
    }

    

根据文件路径获取其目录

Parameters:
filePath
Returns:
    public static String getFileDirectory(String filePath) {
        if (!StringUtils.isEmpty(filePath)) {
            filePath = formatFilePath(filePath);
            if (isDirectory(filePath)) {
                return filePath;
            } else {
                return filePath.substring(0, filePath.lastIndexOf());
            }
        }
        return filePath;
    }
    
    

重命名文件名

Parameters:
originalName - 原文件名
renameAll - true-舍弃原文件名完全做随机重新命名;false-在原文件名后面做随机重命名
appendStr - 加在文件名后的追加后缀,e.g. ${originalName}_${appendStr}.jpg
Returns:
Throws:
java.lang.Exception
    public static String renameFileName(String originalNameboolean renameAllString appendStr) {
    	Assert.hasText(originalName"Parameter 'originalName' can not be empty!");
        String suffix = originalName.substring(originalName.lastIndexOf('.') + 1);
        String fileName = originalName.substring(0, originalName.lastIndexOf('.'));
        String randomName = UUID.randomUUID().toString().replace("-""");
        if (!StringUtils.isEmpty(appendStr)) {
            return String.format("%s_%s.%s"renameAll ? randomName : fileName + "_" + randomName.substring(0, 8), appendStrsuffix);
        } else {
            return String.format("%s.%s"renameAll ? randomName : fileName + "_" + randomName.substring(0, 8), suffix);
        }
    }
    
    

文件复制

Parameters:
srcFile - 源文件
destFile - 目标文件
Throws:
java.lang.Exception
    public static void copyFile(File srcFileFile destFilethrows Exception {
    	Assert.notNull(srcFile"Parameter 'srcFile' can not be null!");
        Assert.notNull(destFile"Parameter 'destFile' can not be null!");
        FileInputStream fis = null;
        FileOutputStream fos = null;
        FileChannel input = null;
        FileChannel output = null;
        try {
            fis = new FileInputStream(srcFile);
            fos = new FileOutputStream(destFile);
            input  = fis.getChannel();
            output = fos.getChannel();
            long size = input.size();
            long pos = 0;
            long count = 0;
            while (pos < size) {
                count = size - pos >  ?  : size - pos;
                pos += output.transferFrom(inputposcount);
            }
        } finally {
            IOUtils.closeQuietly(output);
            IOUtils.closeQuietly(fos);
            IOUtils.closeQuietly(input);
            IOUtils.closeQuietly(fis);
        }
    }
    
    

文件复制

Parameters:
srcFullFileName - 源文件名
destFullFileName - 目标文件名
Throws:
java.lang.Exception
    public static void copyFile(String srcFullFileNameString destFullFileNamethrows Exception {
    	Assert.hasText(srcFullFileName"Parameter 'srcFullFileName' can not be empty!");
    	Assert.hasText(destFullFileName"Parameter 'destFullFileName' can not be empty!");
    	copyFile(getFile(srcFullFileName), getFile(destFullFileName));
    }
    
    

删除文件

Parameters:
fullPath
Returns:
    public static boolean deleteFile(String fullPath) {
        File file = getFile(fullPath);
        if(file.exists()){
        	return file.delete();
        }
        return false;
    }
    
    

尽最大努力删除文件,删除失败不抛出异常

Parameters:
fullPath
Returns:
    public static void deleteFileQuietly(String fullPath) {
        try {
			File file = getFile(fullPath);
			if(file.exists()){
				file.delete();
			}
catch (Exception e) {
		}
    }
    
New to GrepCode? Check out our FAQ X