JAVA Servlet, BufferedReader和BufferedInputStream以及Part——浅析纯文本读取与文件上传和下载
BufferedReader举例
用于纯文本的读取,特点是按行读取,且一般可用split分离对每个成分进行判断。
File file=new File("D:\\java\\homework4\\WebContent\\WEB-INF\\user.txt");
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(fr);
String line;
line=br.readLine();
while(line!=null) {
String username[]=line.split("\\t");
if(username[0].equals(userName)&&username[1].equals(password)&&username[3].equals("学生"))
{realName=username[2];break;}
line=br.readLine();
}
br.close();
BufferedInputStream举例
主要是用于下载文件,任何格式都可识别。
File file = new File("C:\\Users\\zjut\\20200406_130156.mp4");
if (file.exists()) {
response.setContentType("video/mp4");
response.addHeader("Content-Disposition", "attachment;filename=dl.mp4");
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (IOException ex) {
System.out.println (ex.toString());
} finally {
if (bis != null) {
bis.close();
}
if (fis != null) {
fis.close();
}
}
}else{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("文件找不到!");
}
PART举例
用于上传文件,前有getFilename获取要上传文件的路径名。
package com.demo;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name="FileUploadServlet",urlPatterns={"/fileUpload.do"})
@MultipartConfig(location="D:\\",fileSizeThreshold=1024)
public class FileUploadServlet extends HttpServlet{
private String getFilename(Part part){
String fname = null;
String header = part.getHeader("content-disposition");
System.out.println(header);
fname = header.substring(header.lastIndexOf("=")+2,
header.length()-1);
return fname;
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
String path = this.getServletContext().getRealPath("/");
String mnumber = request.getParameter("mnumber");
Part p = request.getPart("fileName");
String message="";
if(p.getSize() >1024*1024){
p.delete();
message = "文件过大!";
}else{
path = path + "\\member\\" +mnumber;
File f = new File(path);
if( !f.exists()){
f.mkdirs();
}
String fname = getFilename(p);
System.out.println(fname);
p.write(path + "\\"+ fname);
message = "上传完成!";
}
request.setAttribute("message", message);
RequestDispatcher rd = request.getRequestDispatcher("/fileUpload.jsp");
rd.forward(request, response);
}
}
注:第一次写博客分享,没有什么经验,看不懂的地方可以给我留言,谢谢你的支持!