我想从一个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,对其执行函数并当场删除。
在这两种情况下,我都需要在使用后删除文件,而且为了优化内存,存储上传的每个文件都不是真正可行的。
那么,我该如何执行上述代码中的删除功能呢?
谢谢。
1条答案
按热度按时间snvhrwxg1#
确保您的输出文件流在写入后正确关闭,您的输入文件流在读取后正确关闭。那么该文件应该可以删除了。
如果File.Delete()返回False,则运行File.DeleteOnExit()。