java文件下载

 /Java文件下载的几种方式

public HttpServletResponse download(String path, HttpServletResponse response) {

         try  {
            
//  path是指欲下载的文件的路径。
            File file  =   new  File(path);
            
//  取得文件名。
            String filename  =  file.getName();
            
//  取得文件的后缀名。
            String ext  =  filename.substring(filename.lastIndexOf( " . " +   1 ).toUpperCase();

            
//  以流的形式下载文件。
            InputStream fis  =   new  BufferedInputStream( new  FileInputStream(path));
            
byte [] buffer  =   new   byte [fis.available()];
            fis.read(buffer);
            fis.close();
            
//  清空response
            response.reset();
            
//  设置response的Header
            response.addHeader( " Content-Disposition " " attachment;filename= "   +   new  String(filename.getBytes()));
            response.addHeader(
" Content-Length " ""   +  file.length());
            OutputStream toClient 
=   new  BufferedOutputStream(response.getOutputStream());
            response.setContentType(
" application/octet-stream " );
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } 
catch  (IOException ex) {
            ex.printStackTrace();
        }
        
return  response;
    }

    
public   void  downloadLocal(HttpServletResponse response)  throws  FileNotFoundException {
        
//  下载本地文件
        String fileName  =   " Operator.doc " .toString();  //  文件的默认保存名
        
//  读到流中
        InputStream inStream  =   new  FileInputStream( " c:/Operator.doc " ); //  文件的存放路径
        
//  设置输出的格式
        response.reset();
        response.setContentType(
" bin " );
        response.addHeader(
" Content-Disposition " " attachment; filename=\ ""  + fileName +  " \ "" );
        
//  循环取出流中的数据
         byte [] b  =   new   byte [ 100 ];
        
int  len;
        
try  {
            
while  ((len  =  inStream.read(b))  >   0 )
                response.getOutputStream().write(b, 
0 , len);
            inStream.close();
        } 
catch  (IOException e) {
            e.printStackTrace();
        }
    }

    
public   void  downloadNet(HttpServletResponse response)  throws  MalformedURLException {
        
//  下载网络文件
         int  bytesum  =   0 ;
        
int  byteread  =   0 ;

        URL url 
=   new  URL( " windine.blogdriver.com/logo.gif " );

        
try  {
            URLConnection conn 
=  url.openConnection();
            InputStream inStream 
=  conn.getInputStream();
            FileOutputStream fs 
=   new  FileOutputStream( " c:/abc.gif " );

            
byte [] buffer  =   new   byte [ 1204 ];
            
int  length;
            
while  ((byteread  =  inStream.read(buffer))  !=   - 1 ) {
                bytesum 
+=  byteread;
                System.out.println(bytesum);
                fs.write(buffer, 
0 , byteread);
            }
        } 
catch  (FileNotFoundException e) {
            e.printStackTrace();
        } 
catch  (IOException e) {
            e.printStackTrace();
        }

    }


//支持在线打开文件的一种方式

public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {
        File f 
= new File(filePath);
        
if (!f.exists()) {
            response.sendError(
404"File not found!");
            
return;
        }
        BufferedInputStream br 
= new BufferedInputStream(new FileInputStream(f));
        
byte[] buf = new byte[1024];
        
int len = 0;

        response.reset(); 
// 非常重要
        if (isOnLine) { // 在线打开方式
            URL u = new URL("file:///" + filePath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader(
"Content-Disposition""inline; filename=" + f.getName());
            
// 文件名应该编码成UTF-8
        } else { // 纯下载方式
            response.setContentType("application/x-msdownload");
            response.setHeader(
"Content-Disposition""attachment; filename=" + f.getName());
        }
        OutputStream out 
= response.getOutputStream();
        
while ((len = br.read(buf)) > 0)
            out.write(buf, 
0, len);
        br.close();
        out.close();
    }

复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.example.administrator.sgsoa.com.example.administrator.sgsoa.utils; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Environment; import android.widget.Toast; import java.io.File; /** * Created by niuyouquan on 2016/5/19. */ public class OpenFile { private static Context context; public OpenFile(Context context){ this.context = context; } public static void openFile(String fileName){ if(fileName!=null && !"".equals(fileName)){ String name = fileName.toLowerCase(); if(name.lastIndexOf("doc") >=0 || name.lastIndexOf("docx") >=0){ //打开的是word Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/myFile/"+name )); intent.setDataAndType(uri, "application/msword"); context.startActivity(intent); }else if(name.lastIndexOf("xls") >=0 || name.lastIndexOf("xlsx") >=0){ //打开的是excel Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/myFile/"+name )); intent.setDataAndType(uri, "application/vnd.ms-excel"); context.startActivity(intent); }else if(name.lastIndexOf("pdf") >=0){ //打开的是pdf Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/myFile/"+name )); intent.setDataAndType(uri, "application/pdf"); context.startActivity(intent); }else if(name.lastIndexOf("ppt") >=0 || name.lastIndexOf("pptx") >=0){ //打开的是ppt Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/myFile/"+name )); intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); context.startActivity(intent); }else if(name.lastIndexOf("zip") >=0){ Toast.makeText(context, "没有可以打开的工具!", Toast.LENGTH_LONG).show(); } } } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值