89 lines
2.9 KiB
Java
89 lines
2.9 KiB
Java
package com.engine.salary.util;
|
|
|
|
import java.io.File;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileOutputStream;
|
|
import java.io.InputStream;
|
|
import java.util.HashSet;
|
|
import java.util.Objects;
|
|
import java.util.Set;
|
|
|
|
public class FileUtils {
|
|
private static final String COPY_FILE_SUFFIX = "_副本";
|
|
|
|
/**
|
|
* 将输入流写入文件
|
|
* @param in 输入流
|
|
* @param path 输出文件的路径
|
|
* @param fileName 输出文件的名称
|
|
*
|
|
* */
|
|
public static void writeFile(InputStream in , String path , String fileName) throws FileNotFoundException {
|
|
|
|
FileOutputStream outputStream = new FileOutputStream("");
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* 给定一个目录和文件,若该目录存在名称相同的文件,则返回一个可用的副本文件名,否则直接返回输入的文件名。
|
|
* @param path 文件的目录
|
|
* @param fileName 文件名
|
|
* @return 可用的文件名
|
|
* */
|
|
public static String getAvailableName(String path ,String fileName){
|
|
|
|
File filePath = new File(path);
|
|
|
|
String suffix = fileName.substring(fileName.lastIndexOf("."));
|
|
File[] files = filePath.listFiles( f -> f.getName().endsWith(suffix) );
|
|
if ( Objects.isNull(files) ) return fileName;
|
|
|
|
Set<String> fileNameSet = new HashSet<>();
|
|
for (File file: files ) {
|
|
fileNameSet.add(file.getName().substring(0 , file.getName().lastIndexOf(".")));
|
|
}
|
|
|
|
boolean isExist = true;
|
|
int count = 1;
|
|
String tempFileName = fileName.substring(0,fileName.lastIndexOf("."));
|
|
String tempFileName1 = tempFileName;
|
|
while(isExist){
|
|
|
|
if (fileNameSet.contains(tempFileName)){
|
|
tempFileName = tempFileName1 + COPY_FILE_SUFFIX + count++;
|
|
}else{
|
|
isExist = false;
|
|
}
|
|
|
|
}
|
|
|
|
return tempFileName + suffix;
|
|
}
|
|
|
|
|
|
/**
|
|
* 给定一个文件的完整路径,若该文件已经存在,则返回一个可用的副本文件名,否则直接返回输入的文件名。
|
|
* @param fullPath 文件的完整路径
|
|
* @return 可用的文件名
|
|
* */
|
|
public static String getAvailableName( String fullPath ){
|
|
File file = new File(fullPath);
|
|
if ( !file.isFile() ) throw new RuntimeException( String.format("not a file [%s].",fullPath));
|
|
|
|
return getAvailableName( file.getParent() ,file.getName() );
|
|
}
|
|
|
|
/**
|
|
* 给定一个文件的完整路径,若该文件已经存在,则返回一个完整可用的副本文件名,否则直接返回输入的文件名。
|
|
* @param fullPath 文件的完整路径
|
|
* @return 完整可用的文件名
|
|
* */
|
|
public static String getAvailableFullName( String fullPath ){
|
|
File file = new File(fullPath);
|
|
if ( !file.isFile() ) throw new RuntimeException( String.format("not a file [%s].",fullPath));
|
|
|
|
return file.getParent() + File.separator + getAvailableName(fullPath);
|
|
}
|
|
}
|