Java如何用时间戳重命名上传的文件
作者:霸道流氓气质
这篇文章主要介绍了Java如何用时间戳重命名上传的文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Java用时间戳重命名上传的文件
场景
上传文件后防止文件重名,需要获取当前时间并作为
时间戳给上传的文件重命名。
实现
if (file != null) {
//获取上传文件名
fileName = file1.getOriginalFilename();
//获取后缀名
String sname = fileName.substring(fileName.lastIndexOf("."));
//时间格式化格式
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");
//获取当前时间并作为时间戳
String timeStamp=simpleDateFormat.format(new Date());
//拼接新的文件名
String newName ="收货单"+timeStamp+sname;
//指定上传文件的路径
String path = "F:\\" + newName;
//上传保存
file.transferTo(new File(path));
//保存当前文件路径
request.getSession().setAttribute("currFilePath", path);
}Java日志时间戳替换成时间
日志中的时间戳替换成时间,不经常用,但是用到的时候又找不到,想简单解用notepad++的正则替换好像又行不通。
上例子:
![]()
想必大家看到这样的日志要奔溃的,什么鬼,只有一个时间戳,这怎么看。。。。
有的时候物联网相关行业会遇到,因为设备为了节约发送数据的成本可能只会携带很少量的信息,因此会出现一系列的麻烦,好了言归正传,上代码了。
上代码:
//定义正则表达式(待匹配的时间)
String reg = "[0-9]{10}";//正则表达式这里是根据时间戳匹配的,看你的日志自己发挥
//编译正则表达式
Pattern patten = Pattern.compile(reg);
//读取目标日志文件
String temp = FileOperateUtils.readToString("D:\\sub.log");
//按行分割
String[] lines = temp.split("\n");
StringBuilder result = new StringBuilder();
for (int i = 0; i < lines.length; i++) {
// 指定要匹配的字符串
Matcher matcher = patten.matcher(lines[i]);
//此处find()每次被调用后,会偏移到下一个匹配
while (matcher.find()) {
String target = matcher.group();
lines[i] = lines[i].replaceFirst(target, DateUtil.getTime(new Date(Long.parseLong(target) * 1000)));
System.out.println(target);
}
result.append(lines[i]).append("\n");
}
//输出
FileOperateUtils.createAndWriteAppendFile(result.toString(), "D:\\subResult.log");
System.out.println("OK! D:\\subResult.log");最终拿到的结果就是你想要的。
有时候遇到问题,想用工具直接搞,又搞不定,写一个代码又麻烦,没办法,只能自己多造一些自己用的工具吧。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
