文件读取下载小例子
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件读取下载小例子相关的知识,希望对你有一定的参考价值。
package sevlet3;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.RequestContext;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
public class UnloadHandleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//得到文件的上传保存目录,将上传的文件保存在WEB-INF目录下,不允许外界访问,保证上传文件的安全
String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
//创建抽象文件
File file = new File(savePath);
//判断文件的保存目录是否存在
//idDirectory是判断savePath是不是目录 (是返回true);
if(!file.exists()&&!file.isDirectory()){
System.out.println(savePath+"目录不存在,需要创建");
//创建目录
file.mkdir();
}
//消息提示
String message ="";
try {
//创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建一个文件上传解析器对象
ServletFileUpload upload = new ServletFileUpload(factory);
//解决上传文件名中的中文乱码
upload.setHeaderEncoding("UTF-8");
//判断提交的数据是不是上传表单的数据 设置最大上传大小,用于判断是普通表单,还是带文件上传的表单。
if(!ServletFileUpload.isMultipartContent(request)){
return;//如果不带文件表单就直接返回 不继续运行
}
//带文件继续
List<FileItem> list = upload.RequestContext((RequestContext) request);//得到所有的文件
for(FileItem item : list){
if(item.isFormField()){//判断表单是否是普通类型的,else就是file类型的
String name= item.getFieldName();
String value = item.getString("UTF-8");//解决中文乱码问题
System.out.println(name + "=" +value);
}else {
String filename = item.getName();//得到上传文件的名称
System.out.println(filename);
if(filename==null || filename.trim().equals("")){
continue;
}
//处理获取到的上传文件中的文件名路径部分,只保留文件名部分
filename = filename.substring(filename.lastIndexOf("\\")+1);
//获取item中的上传文件的输入流
InputStream in = item.getInputStream();
//创建一个文件的输出流
FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);
//创建一个缓冲区
byte buffer[] = new byte[1024];
//判断输入流中的数据是否已经读完的标识
int len = 0;
//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
while((len=in.read(buffer))>0){
//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
out.write(buffer,0,len);
}
//关闭输入流
in.close();
//关闭输出流
out.close();
//删除处理文件上传时生成的临时文件
item.delete();
message = "文件上传成功!";
}
}
} catch (Exception e) {
message = "文件上传失败!";
e.printStackTrace();
}
request.setAttribute("message", message);
request.getRequestDispatcher("/message.jsp").forward(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
以上是关于文件读取下载小例子的主要内容,如果未能解决你的问题,请参考以下文章
我想问下 JAVA中 如何读取PDF文件里面的内容 谁给个详细的 例子 谢谢