BufferedReader和BufferedInputStream以及Part之浅析纯文本读取与文件上传和下载

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);
   }
}

注:第一次写博客分享,没有什么经验,看不懂的地方可以给我留言,谢谢你的支持!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值