ruiyinjinqu
V2EX  ›  Java

[新人求助]文件在可以进行重复上传,怎么让后面上传的文件替换前面上传的同名文件?

  •  
  •   ruiyinjinqu · Oct 4, 2019 · 4490 views
    This topic created in 2462 days ago, the information mentioned may be changed or developed.

    上传文件的名称和格式都已经在数据库表中规定好了,我只用在根据数据库表读取相关信息,然后限制上传文件的类型就好了,但是要求可以重复上传,并且第二次上传的文件能够替换上一次上传的文件。 但是在我进行重复上传的时候不知道为第二次文件上传内容能够覆盖前一次的,但是上传的文件会占的内存会越来越大。下面是我的部分代码:
    String saveFilaName = getSaveFileName(fileName, request);
    String filePath = getSaveFilePath(fileName, request);
    File file = new File(filePath,saveFilaName);
    // if (file.exists()){
    // file.delete();
    // }
    file.deleteOnExit();
    BufferedOutputStream bout = null;
    FileOutputStream fout = null;
    int blean = fileBytes.length;
    try{
    file.createNewFile();
    fout = new FileOutputStream(file,true);
    bout = new BufferedOutputStream(fout);
    if (blean>1) {//修复上传 docx、xlsx 文件损坏问题
    byte[] tmps = new byte[2];
    tmps[0]=fileBytes[blean-2];
    tmps[1]=fileBytes[blean-1];
    if (Arrays.equals(tmps, HttpConstances.CRLF) ) {
    bout.write(fileBytes,0,blean-2);
    }else{
    bout.write(fileBytes,0,blean);
    }
    }else{
    bout.write(fileBytes,0,blean);
    }
    bout.flush();
    }catch (Exception e) {
    throw e;
    }finally{
    if(fout!=null){
    fout.close();
    }
    if(bout!=null){
    bout.close();
    }
    }
    在上面的注释掉的代码,本来是可以删除文件的,但是如果输出流有问题,会导致现在的没法写进去,又将以前删除了, 所以考虑有没有更好的替换方法,或者思路。初次提问, 有啥不太清楚的地方大家多多原谅,麻烦了

    3 replies    2019-10-05 15:39:28 +08:00
    luassuns
        1
    luassuns  
       Oct 4, 2019 via iPhone   ❤️ 1
    可以参考各种软件常用的 .swap .bak ?
    Solix
        2
    Solix  
       Oct 4, 2019   ❤️ 2
    一般都是两个文件夹,一个是上传了还没有读取,一个是读取了备份文件夹,读取完就移到备份文件夹加.bak ,新来的文件覆盖上一个,备份文件为-2.bak
    ruiyinjinqu
        3
    ruiyinjinqu  
    OP
       Oct 5, 2019
    谢谢大家,我想的是在判断同名文件是否存在,存在的话修改文件名,然后在后面新文件上传成功后删除改名的文件,要是新文件上传失败则在 catch 里将文件名改回来就行了 :)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5433 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 07:49 · PVG 15:49 · LAX 00:49 · JFK 03:49
    ♥ Do have faith in what you're doing.