zoukankan      html  css  js  c++  java
  • fileUtil文件的上传下载

    package com.beisun.mbp.util;

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import java.nio.channels.FileChannel;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.springframework.util.FileCopyUtils;
    import org.springframework.web.multipart.MultipartFile;

    public class FileUtil {

    /**
    * 上传文件
    * @param filePath 上传文件目录
    * @param fileName 保存的文件名称
    * @param file 文件流类
    * @param request 请求
    * @throws IOException IO异常
    */
    public static void updoadFile(String filePath,String fileName, MultipartFile file,
    HttpServletRequest request) throws IOException{
    //如果文件夹不存在,则创建文件夹
    File dirPath = new File(filePath);
    if(!dirPath.exists()){
    dirPath.mkdir();
    }

    File uploadFile = new File(dirPath +"/"+ fileName);
    FileCopyUtils.copy(file.getBytes(), uploadFile);
    }

    /**
    * 复制文件
    * @param localFileName 原文件地址和文件名
    * @param tmpFileName 目标文件地址和文件名
    * @throws IOException
    */
    public static void copyFile(String localFileName,String tmpFilePath,String tmpFileName) throws IOException{
    File localFile = new File(localFileName);
    File tmpFile = new File(tmpFilePath,tmpFileName);
    FileCopyUtils.copy(localFile, tmpFile);
    }

    /**
    * 删除文件
    * @param fileName 文件地址和文件名
    * @throws IOException
    */
    public static void deleteFile(String fileName) throws IOException{
    File localFile = new File(fileName);
    localFile.delete();
    }

    /**
    * 下载文件,是向页面输出流,不返回流
    * @param filePath 文件服务器存储目录
    * @param downloadName 下载文件保存的文件名
    * @param fileName 服务器存储文件名
    * @param request
    * @param response
    * @throws UnsupportedEncodingException
    */
    @SuppressWarnings("static-access")
    public static void downloadFile(String filePath,String downloadName,String fileName,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{

    fileName = new java.net.URLDecoder().decode(fileName, "utf-8");
    downloadName = new java.net.URLDecoder().decode(downloadName, "utf-8");
    String path = filePath+fileName;

    response.setContentType("application/octet-stream;charset=UTF-8");
    response.setHeader("Content-Disposition", "attachment;filename=" + new String((downloadName).getBytes("GBK"), "iso8859-1"));
    try {
    //以流的形式下载文件
    InputStream fis = new BufferedInputStream(new FileInputStream(path));
    byte[] buffer = new byte[fis.available()];
    fis.read(buffer);
    fis.close();

    OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
    toClient.write(buffer);
    toClient.flush();
    toClient.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    /**
    * 获取文件的is
    * @param filePath 文件服务器存储目录
    * @param fileName 服务器存储文件名
    * @param request
    * @param response
    * @throws UnsupportedEncodingException
    */
    @SuppressWarnings("static-access")
    public static InputStream getFileIS(String filePath,String fileName,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{

    fileName = new java.net.URLDecoder().decode(fileName, "utf-8");
    String path = filePath+fileName;
    InputStream fis = null;
    try {
    //以流的形式下载文件
    fis = new BufferedInputStream(new FileInputStream(path));
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    return fis;
    }

    /**
    * 保存文件
    * @param datas 文件数据
    * @param pathName 文件路径
    */
    public static void saveFile(byte[] datas,String pathName){
    File file = new File(pathName);

    //寤虹珛杈撳嚭瀛楄妭娴�
    FileOutputStream fos;
    try {
    fos = new FileOutputStream(file);
    //鐢‵ileOutputStream 鐨剋rite鏂规硶鍐欏叆瀛楄妭鏁扮粍
    fos.write(datas);
    //涓轰簡鑺傜渷IO娴佺殑寮�攢锛岄渶瑕佸叧闂�
    fos.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    /**
    * 获取文件数据
    * @param pathName 文件路径
    * @return
    */
    public static byte[] getFile(String pathName){
    File file = new File(pathName);
    byte[] buffer = null;
    try {
    FileInputStream fis = new FileInputStream(file);
    ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
    byte[] b = new byte[1000];
    int n;
    while ((n = fis.read(b)) != -1) {
    bos.write(b, 0, n);
    }
    fis.close();
    bos.close();
    buffer = bos.toByteArray();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return buffer;

    }

    /**
    * 计算文件大小文件大小
    * @param filePath 文件路径例如:E:\imgData\afr\9211496189393485.jpg
    * @return 文件大小 Kb
    */
    public static long GetFileSize(String filePath){
    long fileSize=0l;
    FileChannel fc= null;
    try {
    File f= new File(filePath);
    if (f.exists() && f.isFile()){
    FileInputStream fis= new FileInputStream(f);
    fc= fis.getChannel();
    fileSize=fc.size()/1024;
    //logger.info(fileSize);
    }else{
    //logger.info("file doesn't exist or is not a file");
    }
    } catch (FileNotFoundException e) {
    //logger.error(e);
    } catch (IOException e) {
    //logger.error(e);
    } finally {
    if (null!=fc){
    try{
    fc.close();
    }catch(IOException e){
    //logger.error(e);
    }
    }
    }

    return fileSize;
    }

    /**
    * getImage 根据图片的路径获取图片给前台
    * @author sunjianbo
    * @time 2016年8月25日上午10:41:37
    * @param response
    * @param request
    * @param filePath
    * @throws Exception
    */
    //@RequestMapping(value = "/getImage.do", method = RequestMethod.GET)
    public void getImage(HttpServletResponse response, HttpServletRequest request,String filePath)
    throws Exception {

    BufferedOutputStream bos = null;
    try {
    bos = new BufferedOutputStream(response.getOutputStream());

    byte[] data = getFile(filePath);
    bos.write(data);
    bos.flush();
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (bos != null)
    bos.close();
    }
    }


    }

  • 相关阅读:
    有限制的最大连续和问题
    Codevs 5056 潜水员
    Codevs 1958 刺激
    Codevs 3731 寻找道路 2014年 NOIP全国联赛提高组
    [NOIP2014]解方程
    Codevs 3729 飞扬的小鸟
    Codevs 1689 建造高塔
    Codevs 2102 石子归并 2
    C语言基础之进制的那些事(1)
    指针
  • 原文地址:https://www.cnblogs.com/wangjintao-0623/p/9972830.html
Copyright © 2011-2022 走看看