为啥这篇文章,是因为有需求,所以写了一下。是为了写了一个分享,文件有效期,到期了然后就移除该文件。话不多说上代码
获取文件后缀为.aup3 \ .opus \ .pcm 看你们自己的需求
/**
* 获取文件的创建时间
*
* @param filePath 文件路径
* @return
*/
public static String getCreateTime(String filePath) {
try {
String strTime = null;
Process p = Runtime.getRuntime().exec("cmd /C dir " + filePath + "/tc");
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
if (line.endsWith(".aup3") || line.endsWith(".opus") || line.endsWith(".pcm")) {
strTime = line.substring(0, 17);
break;
}
}
return strTime;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
获取文件夹下的所有文件
/**
* 获取文件夹下所有文件
* @param filePath
*/
public static List<String> getFileName(String filePath) {
if (StringUtils.isNotBlank(filePath)) {
File file = new File(filePath);
//判断文件或目录是否存在
if (!file.exists()) {
System.out.println("【" + filePath + " not exists】");
return null;
}
//获取该文件夹下所有的文件
File[] fileArray = file.listFiles();
File fileName = null;
List<String> arrayList = new ArrayList<>();
for (int i = 0; i < Objects.requireNonNull(fileArray).length; i++) {
fileName = fileArray[i];
//判断此文件是否存在
if (fileName.isDirectory()) {
System.out.println("【目录:" + fileName.getName() + "】");
return null;
} else {
System.out.println(fileName.getName());
arrayList.add(fileName.getName());
}
}
return arrayList;
}
return null;
}
获取文件的创建时间的时间戳
/**
* 返回文件创建时间的时间戳
* @param filePath
* @return
*/
public static Long createTimeFile(String filePath) {
String createTime = getCreateTime(filePath);
String s = createTime + ":00";
System.out.println("获得文件时间:" + s);
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime ldt = LocalDateTime.parse(s, df).plusDays(3);
return ldt.toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
根据文件绝对路径移除文件
/**
* 删除文件
*
* @param filePath
* @return
*/
public static boolean delete(String filePath) {
File file = new File(filePath);
if (file.exists()) {
return file.delete();
}
return false;
}
测试mian方法
public static void main(String[] args) throws ParseException {
// String path = "D:\\resource\\file\\shareData\\1632887450482.opus";
// deleteFile(path);
String path = "D:\\resource\\file\\shareData\\";
List<String> fileName = getFileName(path);
if (CollectionUtil.isNotEmpty(fileName) || fileName.size() >0 ){
for (String s : fileName) {
//1.获取文件时间戳
Long createTime = createTimeFile(path + s);
// 2、获取当前得时间戳
long nowTime = System.currentTimeMillis();
if(createTime < nowTime){
delete(path+s);
}
}
}
}