UUID与System.currentTimeMillis()产生一个新文件名的工具类

1.FileUtils.java

package Utils.GenerateNewFileName;

import java.util.UUID;

public class FileUtils {
    /**
         * 获取文件的新名称
         * @param fileName 文件名
         * @return 文件新生成的名称
         */
        public static String getNewFileName(String fileName) {
            StringBuffer newFileName = new StringBuffer();
            String extension = fileName.substring(fileName.lastIndexOf('.'));
            newFileName.append(UUID.randomUUID().toString());
            newFileName.append(extension);
            return newFileName.toString();
        }
        
        public static String getNewFileNameWithTimeStamp(String fileName) {
            StringBuffer newFileName = new StringBuffer();
            String extension = fileName.substring(fileName.lastIndexOf('.'));
            newFileName.append(System.currentTimeMillis());
            newFileName.append(extension);
            return newFileName.toString();
        }
}

 

 2.测试:

package Utils.GenerateNewFileName;

import org.junit.Test;

public class TestUtils {

    @Test
    public void Test1(){
        System.out.println(FileUtils.getNewFileName("1.DOC"));
        System.out.println(FileUtils.getNewFileName("1.X.DOCX"));
        System.out.println(FileUtils.getNewFileNameWithTimeStamp("1.X.DOCX"));
        System.out.println(FileUtils.getNewFileNameWithTimeStamp("1.DOCX"));
    }
}

 

 

 结果:

e02fd6b0-8e05-4762-a333-6d71ba2e0cb2.DOC
f703af3a-4213-41dd-a6e7-217c59045879.DOCX
1505551091376.DOCX
1505551091376.DOCX

 



 

以下代码有问题吗:@PostMapping("/addAppliance") //接口路径 public String addAppliance(@RequestParam("appliancename") String applianceName,@RequestParam("appliancepicture") MultipartFile appliancePicture,@RequestParam("aspectstate") String aspectState,@RequestParam("applianceprice") float appliancePrice,@RequestParam("useduration") String useDuration,@RequestParam("functionstate") String functionState,HttpSession session,HttpServletRequest request, HttpServletResponse response) { Seller seller = (Seller) session.getAttribute("seller"); if (seller == null) { //如果卖家没有登录 request.setAttribute("error","请先登陆后再上架家电");return "login";} Appliance appliance = new Appliance(); appliance.setSellerId(seller.getSellerId());//获取卖家id appliance.setSellerName(seller.getSellerName());//获取卖家用户名 String originalFilename = appliancePicture.getOriginalFilename(); // 获取二手家电图片名 String savePath = "D:/secondhandHA/src/main/webapp/img/"; // 设置图片的保存路径 String picName= System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));//生成的图片名 File savepicFile = new File(savePath + picName); appliancePicture.transferTo(savepicFile ); // 上传二手家电图片到指定路径 appliance.setAppliancePicture(picName);//获取二手家电图片 appliance.setApplianceName(applianceName);//获取二手家电名称 appliance.setAspectState(aspectState);//获取外观状态 appliance.setAppliancePrice(appliancePrice);//获取二手家电价格 appliance.setUseDuration(useDuration);//获取使用时长 appliance.setFunctionState(functionState);//获取功能状态 appliance.setApplianceId(UuidUtils.getUuid()); //调用UuidUtils工具类设置家电id int rows = applianceService.addAppce(appliance); //调用applianceService的addAppce将此家电添加到数据库并且返回受影响的行数 if(rows > 0){ request.setAttribute("success","上架家电成功");return "redirect:/ appliancesl";}else{ request.setAttribute("error","上架家电失败,请重试");return "addapp";}} //判断上架家电是否成功
07-25
System.currentTimeMillis()返回的是从UTC 1970年1月1日午夜开始的毫秒数。而,由于各种因素的影响,它并不总是精确的。引用提到了一个可能的问题,当使用System.currentTimeMillis()给生成文件命名时,可能会出现同名情况。这是因为在同一毫秒内多次调用System.currentTimeMillis()可能会返回相同的值。这种情况下,可以考虑使用更精确的时间戳生成方式,比如使用UUID作为文件名的一部分,以确保文件名的唯一性。 另外,引用提供的示例代码显示了如何使用System.currentTimeMillis()来显示当前时间。然而,该示例代码可能存在一些问题,导致返回的值不准确。比如在计算currentHour时,应该使用totalHour % 24而不是totalMinutes % 24。此外,在打印时间时,应该使用字符串连接符“+”而不是“,”。 总之,System.currentTimeMillis()在一些特定情况下可能不准确,因此在使用时需要注意可能出现的问题,并根据具体需求选择合适的解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [高并发下,使用System.currentTimeMillis()计算时间差出现负数](https://blog.csdn.net/acwlb/article/details/103522314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [System.currentTimeMillis()返回一个错误的值](https://blog.csdn.net/smbluesky/article/details/88965867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值