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 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); } }