在Java中处理后删除Excel文件

c6ubokkw  于 2022-10-15  发布在  Java
关注(0)|答案(1)|浏览(282)

我想从一个HTML表单中获取一个输入Java文件,使用Servlet对其进行处理,并在使用后将其删除。
然而,我无法为同样的问题找到任何可行的解决方案。使用完该文件后,可以使用哪些选项从项目文件夹中删除该文件。
以下是我的代码:

public class TryWithResources extends fileUpload{
    public static void main(String args[]){ 
            try {

                FileInputStream fis= new FileInputStream("C:\\Users\\khuha\\eclipse- 
                workspace\\firstDemo\\fileData");
                XSSFWorkbook wb=new XSSFWorkbook(fis);
                System.out.println("Enter the sheet you want to search in: ");
                Scanner sc= new Scanner(System.in);
                int n= sc.nextInt(); 
                XSSFSheet sheet=wb.getSheetAt(n-1);
                Iterator<Row> itr=sheet.iterator();

                while(itr.hasNext()) {

                    Row row=itr.next();

                    Iterator<Cell> cellIterator=row.cellIterator();
                    while(cellIterator.hasNext()) {
                        Cell cell=cellIterator.next();
                        Cell name_cell=row.getCell(0);
                        String name=name_cell.getStringCellValue();
                        if (cell.getRowIndex()!=0 && cell.getStringCellValue().equals("")&& cell.getColumnIndex()!=0){
                            int idate=cell.getColumnIndex();
                            Row first_row=sheet.getRow(0); 
                            Cell date_cell=first_row.getCell(idate);

                            Date sdate=date_cell.getDateCellValue();
                            SimpleDateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy");  
                            String  strDate = formatter.format(sdate); 


                            if (AttendanceUtils.DayCheck(sdate)){
                                Locale locale=Locale.getDefault();
                                System.out.println("No entry found for "+name+" on "+ strDate.substring(8,10)+"-"+AttendanceUtils.getmonth( sdate)+"-"+strDate.substring(24,28) +" "+ AttendanceUtils.getDayStringOld(sdate,locale));

                            }

                        }

                        }

                    }
                    System.out.println("");

                }

            catch(Exception e)  
            {  
            e.printStackTrace();  
            }  

    }
}

帮助上传此文件的Servlet的代码为

package attendanceApp;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class fileUpload extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        try {
        ServletFileUpload sf=new ServletFileUpload(new DiskFileItemFactory());

            List<FileItem> multifiles = sf.parseRequest(request);
            //String file="";

            for(FileItem item : multifiles)
            {
                //file =item.getName();
                item.write(new File("C:\\Users\\khuha\\eclipse-workspace\\firstDemo\\fileData"));

            }
        }
        catch(Exception e) {
            System.out.println(e);
      }
  }
  public String fileName(String files){
        return files;
//ignore this function, created to explore another solution 
    }

}

我在这里探索两个选择
1.开始使用TryWithResources,但我不确定它将如何实现删除操作。
1.要将上传的每个文件编写为fileData,对其执行函数并当场删除。
在这两种情况下,我都需要在使用后删除文件,而且为了优化内存,存储上传的每个文件都不是真正可行的。
那么,我该如何执行上述代码中的删除功能呢?
谢谢。

snvhrwxg

snvhrwxg1#

确保您的输出文件流在写入后正确关闭,您的输入文件流在读取后正确关闭。那么该文件应该可以删除了。
如果File.Delete()返回False,则运行File.DeleteOnExit()。

相关问题