Java 文件上传后重命名文件 public void handleFileUpload(FileUploadEvent事件){ ExternalContext extContext=FacesContext.getCurrentInstance().getExternalContext(); 文件结果=新文件(extContext.getRealPath(“//admin//images”)+“//”+event.getFile().getFileName()); //文件结果=新文件(“D:\\Netbeans项目\\mcGrawLibPro\\mcGrawLibPro war\\web\\item”,event.getFile().getFileName()); File bg=新文件(extContext.getRealPath(“//admin//images”)+“//macback.png”); 试一试{ 重命名(新文件(extContext.getRealPath(“//admin//images”)+“//bg.png”); 文件f1=新文件(extContext.getRealPath(“//admin//images”)+“//macback.png”); 结果:重命名为(f1); //系统输出打印LN(f1); 系统输出打印项次(结果); FileOutputStream FileOutputStream=新的FileOutputStream(结果); 字节[]缓冲区=新字节[缓冲区大小]; 整块; InputStream InputStream=event.getFile().getInputstream(); while(true){ bulk=inputStream.read(缓冲区); 如果(体积

Java 文件上传后重命名文件 public void handleFileUpload(FileUploadEvent事件){ ExternalContext extContext=FacesContext.getCurrentInstance().getExternalContext(); 文件结果=新文件(extContext.getRealPath(“//admin//images”)+“//”+event.getFile().getFileName()); //文件结果=新文件(“D:\\Netbeans项目\\mcGrawLibPro\\mcGrawLibPro war\\web\\item”,event.getFile().getFileName()); File bg=新文件(extContext.getRealPath(“//admin//images”)+“//macback.png”); 试一试{ 重命名(新文件(extContext.getRealPath(“//admin//images”)+“//bg.png”); 文件f1=新文件(extContext.getRealPath(“//admin//images”)+“//macback.png”); 结果:重命名为(f1); //系统输出打印LN(f1); 系统输出打印项次(结果); FileOutputStream FileOutputStream=新的FileOutputStream(结果); 字节[]缓冲区=新字节[缓冲区大小]; 整块; InputStream InputStream=event.getFile().getInputstream(); while(true){ bulk=inputStream.read(缓冲区); 如果(体积,java,Java,我的问题是,当我上传一张图片类型png,如aaa.png,它可以上传到服务器上,但不能重命名,上传aaa.png后,我重新上传这张图片(aaa.png),它可以更改名称,但它有两个文件,一个是aaa.png,一个是macback.png 我的代码出了什么问题 谢谢大家! 以下是我认为您正在尝试的: 上载文件时,您希望将其命名为macback.png,而不是其原始文件名 上载第二个文件时,首先要将macback.png重命名为bg.png,然后将上载的文件另存为macback.png 如果是这种情

我的问题是,当我上传一张图片类型png,如aaa.png,它可以上传到服务器上,但不能重命名,上传aaa.png后,我重新上传这张图片(aaa.png),它可以更改名称,但它有两个文件,一个是aaa.png,一个是macback.png

我的代码出了什么问题


谢谢大家!

以下是我认为您正在尝试的:

  • 上载文件时,您希望将其命名为macback.png,而不是其原始文件名
  • 上载第二个文件时,首先要将macback.png重命名为bg.png,然后将上载的文件另存为macback.png
  • 如果是这种情况,首先需要测试macback.png文件是否存在,如果存在,则重命名它。然后为macback.png文件创建一个文件对象,并打开该文件的FileOutputStream,将上传的文件写入其中

    大概是这样的:

    public void handleFileUpload(FileUploadEvent event) {
    
    
             ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
                  File result = new File(extContext.getRealPath("//admin//images") + "//" + event.getFile().getFileName());
               // File result = new File("D:\\Netbeans Project\\mcGrawLibPro\\mcGrawLibPro-war\\web\\item", event.getFile().getFileName());
                  File bg = new File(extContext.getRealPath("//admin//images")+"//macback.png");
                try {
    
    
    
    
                        bg.renameTo(new File(extContext.getRealPath("//admin//images")+"//bg.png"));
                        File f1 = new File(extContext.getRealPath("//admin//images") + "//macback.png" );
                        result.renameTo(f1);
    
    
    
                    //System.out.println(f1);
                    System.out.println(result);
                    FileOutputStream fileOutputStream = new FileOutputStream(result);
    
                    byte[] buffer = new byte[BUFFER_SIZE];
    
                    int bulk;
                    InputStream inputStream = event.getFile().getInputstream();
                    while (true) {
                      bulk = inputStream.read(buffer);
                      if (bulk < 0) {
                             break;
                             }
                      fileOutputStream.write(buffer, 0, bulk);
                      fileOutputStream.flush();
                      }
    
                      fileOutputStream.close();
                      inputStream.close();
    
                      FacesMessage msg = new FacesMessage("OK",
                          event.getFile().getFileName() + " was upload.");
                      FacesContext.getCurrentInstance().addMessage(null, msg);
    
                      } catch (IOException e) {
                            e.printStackTrace();
    
                      FacesMessage error = new FacesMessage("Can't upload!");
                      FacesContext.getCurrentInstance().addMessage(null, error);
                      }
            }
    
    public void handleFileUpload(FileUploadEvent事件){
    ExternalContext extContext=FacesContext.getCurrentInstance().getExternalContext();
    文件结果=新文件(extContext.getRealPath(“//admin//images”)+“//macback.png”);
    if(result.exists()){
    renameTo(新文件(extContext.getRealPath(“//admin//images”)+“//bg.png”);
    }
    试一试{
    File targetFile=新文件(extContext.getRealPath(“//admin//images”)+“//macback.png”);
    FileOutputStream FileOutputStream=新的FileOutputStream(targetFile);
    字节[]缓冲区=新字节[缓冲区大小];
    整块;
    InputStream InputStream=event.getFile().getInputstream();
    while(true){
    bulk=inputStream.read(缓冲区);
    如果(体积<0){
    打破
    }
    写入(缓冲区,0,大容量);
    fileOutputStream.flush();
    }
    fileOutputStream.close();
    inputStream.close();
    FacesMessage msg=新的FacesMessage(“确定”,
    event.getFile().getFileName()+“已上载。”);
    FacesContext.getCurrentInstance().addMessage(null,msg);
    }捕获(IOE异常){
    e、 printStackTrace();
    FacesMessage error=新的FacesMessage(“无法上载!”);
    FacesContext.getCurrentInstance().addMessage(null,错误);
    }
    }
    
    好的,让我们看看这次我是否拿到了:

  • 您希望将第一个A.png另存为A.png
  • 第二次上载A.png时,您希望将第一个A.png重命名为macback.png,并将第二个A.png存储为A.png
  • 如果是这种情况,请尝试以下方法:

    public void handleFileUpload(FileUploadEvent event) {
        ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
        File result = new File(extContext.getRealPath("//admin//images") + "//macback.png");
        if(result.exists()) {
            result.renameTo(new File(extContext.getRealPath("//admin//images")+"//bg.png"));
        }
    
        try {
            File targetFile = new File(extContext.getRealPath("//admin//images") + "//macback.png" );
    
            FileOutputStream fileOutputStream = new FileOutputStream(targetFile);
            byte[] buffer = new byte[BUFFER_SIZE];
    
            int bulk;
            InputStream inputStream = event.getFile().getInputstream();
            while (true) {
                bulk = inputStream.read(buffer);
                if (bulk < 0) {
                    break;
                }
                fileOutputStream.write(buffer, 0, bulk);
                fileOutputStream.flush();
            }
    
            fileOutputStream.close();
            inputStream.close();
    
            FacesMessage msg = new FacesMessage("OK",
            event.getFile().getFileName() + " was upload.");
            FacesContext.getCurrentInstance().addMessage(null, msg);
    
        } catch (IOException e) {
            e.printStackTrace();
    
            FacesMessage error = new FacesMessage("Can't upload!");
            FacesContext.getCurrentInstance().addMessage(null, error);
        }
    }
    
    public void handleFileUpload(FileUploadEvent事件){
    ExternalContext extContext=FacesContext.getCurrentInstance().getExternalContext();
    文件结果=新文件(extContext.getRealPath(“//admin//images”)+“//”+event.getFile().getFileName());
    if(result.exists()){
    renameTo(新文件(extContext.getRealPath(“//admin//images”)+“//mackback.png”);
    }
    试一试{
    File targetFile=新文件(extContext.getRealPath(“//admin//images”)+“//”+event.getFile().getFileName());
    FileOutputStream FileOutputStream=新的FileOutputStream(targetFile);
    字节[]缓冲区=新字节[缓冲区大小];
    整块;
    InputStream InputStream=event.getFile().getInputstream();
    while(true){
    bulk=inputStream.read(缓冲区);
    如果(体积<0){
    打破
    }
    写入(缓冲区,0,大容量);
    fileOutputStream.flush();
    }
    fileOutputStream.close();
    inputStream.close();
    FacesMessage msg=新的FacesMessage(“确定”,
    event.getFile().getFileName()+“已上载。”);
    FacesContext.getCurrentInstance().addMessage(null,msg);
    }捕获(IOE异常){
    e、 printStackTrace();
    FacesMessage error=新的FacesMessage(“无法上载!”);
    FacesContext.getCurrentInstance().addMessage(null,错误);
    }
    }
    
    我认为问题在于您试图过早地将
    结果
    重命名为
    f1
    。在您呼叫的位置public void handleFileUpload(FileUploadEvent event) { ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext(); File result = new File(extContext.getRealPath("//admin//images") + "//" + event.getFile().getFileName()); if(result.exists()) { result.renameTo(new File(extContext.getRealPath("//admin//images")+"//mackback.png")); } try { File targetFile = new File(extContext.getRealPath("//admin//images") + "//" + event.getFile().getFileName() ); FileOutputStream fileOutputStream = new FileOutputStream(targetFile); byte[] buffer = new byte[BUFFER_SIZE]; int bulk; InputStream inputStream = event.getFile().getInputstream(); while (true) { bulk = inputStream.read(buffer); if (bulk < 0) { break; } fileOutputStream.write(buffer, 0, bulk); fileOutputStream.flush(); } fileOutputStream.close(); inputStream.close(); FacesMessage msg = new FacesMessage("OK", event.getFile().getFileName() + " was upload."); FacesContext.getCurrentInstance().addMessage(null, msg); } catch (IOException e) { e.printStackTrace(); FacesMessage error = new FacesMessage("Can't upload!"); FacesContext.getCurrentInstance().addMessage(null, error); } }