• java File处理


    /**************************************************************************************工具类********************************************************************************************************/
    
    package com.zero4j.util;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Component;
    import org.springframework.web.context.ServletContextAware;
    import org.springframework.web.multipart.MultipartFile;
    
    /**
    * 
    * 上传工具类
    * 
    *
    */
    @Component
    public class UploadUtil implements ServletContextAware {
    
    private static ServletContext servletContext = null;
    
    @Override
    public void setServletContext(ServletContext servletContext) {
    this.servletContext = servletContext;
    }
    
    /**
    * 保存文件
    * 
    * @param files
    * @param id
    * @param request
    * @author hzr 2016年12月5日
    */
    public static void fileSave(MultipartFile files, String id, HttpServletRequest request) {
    String fileFileName = files.getOriginalFilename();
    if (files == null || files.equals("")) {
    return;
    } else {
    String extension = (fileFileName.substring(fileFileName.lastIndexOf(".") + 1, fileFileName.length())).toLowerCase(); // 获取扩展名并转换成小写
    // 开始执行上传操作
    try {
    
    // 设定图片上传的临时目录
    File srcFile = new File(servletContext.getRealPath("/uploads/other/"), id + "." + extension);
    System.out.println(srcFile);
    if (!srcFile.exists()) {
    System.out.println("路径不存在!!!!!!!!");
    srcFile.mkdirs();
    }
    files.transferTo(srcFile);
    
    } catch (Exception e) {
    e.printStackTrace();
    return;
    }
    
    /*
    * //如果文件后缀不同则先删除原有文件
    * if(files.getExtension()==null||!extension.equals
    * (_upload.getExtension().toLowerCase())){ new
    * File(ServletActionContext
    * .getRequest().getRealPath("/uploads/other"),
    * _upload.getId()+"."+_upload.getExtension()).deleteOnExit(); }
    * 
    * //更新文件后缀到数据库中 _upload.setContentType(this.fileContentType);
    * _upload.setExtension(extension);
    * this.uploadService.update(_upload);
    */
    
    // }
    
    }
    
    }
    
    
    
    
    /**
    * 保存文件
    * 
    * @param files
    * @param id
    * @param request
    * @author hzr 2016年12月5日
    */
    public static String fileSave_other(MultipartFile files, String id, HttpServletRequest request) {
    String fileFileName = files.getOriginalFilename();
    if (files == null || files.equals("")) {
    return null;
    } else {
    String extension = (fileFileName.substring(fileFileName.lastIndexOf(".") + 1, fileFileName.length())).toLowerCase(); // 获取扩展名并转换成小写
    // 开始执行上传操作
    try {
    
    // 设定图片上传的临时目录
    
    File srcFile = new File(servletContext.getRealPath("/uploads/styleItem/"), id + "." + extension);
    System.out.println(srcFile);
    if (!srcFile.exists()) {
    System.out.println("文件路径不存在!!!!!!!!");
    srcFile.mkdirs();
    }
    
    /*String imageSourcePath = request.getRealPath("/uploads/styleItem");
    File srcFile = new File(imageSourcePath, id + "." + extension); 
    if(!srcFile.exists()){ 
    srcFile.mkdir(); 
    }*/
    
    //System.out.println(srcFile.toString()+"路径asdasdasdsa");
    files.transferTo(srcFile);
    return "/uploads/styleItem/"+id + "." + extension ;
    } catch (Exception e) {
    e.printStackTrace();
    return null ;
    }
    
    /*
    * //如果文件后缀不同则先删除原有文件
    * if(files.getExtension()==null||!extension.equals
    * (_upload.getExtension().toLowerCase())){ new
    * File(ServletActionContext
    * .getRequest().getRealPath("/uploads/other"),
    * _upload.getId()+"."+_upload.getExtension()).deleteOnExit(); }
    * 
    * //更新文件后缀到数据库中 _upload.setContentType(this.fileContentType);
    * _upload.setExtension(extension);
    * this.uploadService.update(_upload);
    */
    
    // }
    
    }
    
    }
    
    
    
    /** 
    * 删除文件夹 
    * @param filePathAndName String 文件夹路径及名称 如c:/fqf 
    * @param fileContent String 
    * @return boolean 
    */ 
    public static void delFolder(String folderPath) { 
    folderPath=servletContext.getRealPath(folderPath);
    //System.out.println("执行删除文件夹操作 源文件路径"+folderPath);
    try { 
    delAllFile(folderPath); //删除完里面所有内容 
    String filePath = folderPath; 
    filePath = filePath.toString(); 
    java.io.File myFilePath = new java.io.File(filePath); 
    myFilePath.delete(); //删除空文件夹 
    
    } 
    catch (Exception e) { 
    System.out.println("删除文件夹操作出错"); 
    e.printStackTrace(); 
    
    } 
    
    } 
    
    
    
    /** 
    * 删除文件夹里面的所有文件 
    * @param path String 文件夹路径 如 c:/fqf 
    */ 
    public static void delAllFile(String path) { 
    path=servletContext.getRealPath(path);
    
    File file = new File(path); 
    if (!file.exists()) { 
    return; 
    } 
    if (!file.isDirectory()) { 
    return; 
    } 
    String[] tempList = file.list(); 
    File temp = null; 
    for (int i = 0; i < tempList.length; i++) { 
    if (path.endsWith(File.separator)) { 
    temp = new File(path + tempList[i]); 
    } 
    else { 
    temp = new File(path + File.separator + tempList[i]); 
    } 
    if (temp.isFile()) { 
    
    temp.delete(); 
    } 
    if (temp.isDirectory()) { 
    delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文件 
    delFolder(path+"/"+ tempList[i]);//再删除空文件夹 
    } 
    } 
    } 
    
    
    
    
    
    
    /** 
    * 复制单个文件 
    * @param oldPath String 原文件相对路径 如:c:/fqf.txt 
    * @param newPath String 复制后相对路径 如:f:/fqf.txt 
    * @return boolean 
    */ 
    public static boolean copyFile(String oldPath, String newPath) { 
    // System.out.println("执行复制文件操作 源文件路径"+servletContext.getRealPath(oldPath)+" 目的文件路径 "+servletContext.getRealPath(newPath));
    try { 
    // int bytesum = 0; 
    int byteread = 0; 
    File oldfile = new File(servletContext.getRealPath(oldPath)); 
    
    File srcFile = new File(servletContext.getRealPath("/uploads/styleItemTemplate/"));
    //System.out.println(srcFile);
    if (!srcFile.exists()) {
    System.out.println("文件夹路径不存在!!!!!!!!");
    srcFile.mkdirs();
    }
    
    File myFileName = new File(servletContext.getRealPath(newPath)); 
    try{ 
    if (!myFileName.exists()) { 
    myFileName.createNewFile(); 
    } 
    }catch (Exception e) { 
    System.out.println("新建文件操作出错"); 
    e.printStackTrace();
    return false;
    } 
    
    
    if (oldfile.exists()) { //文件存在时 
    InputStream inStream = new FileInputStream(servletContext.getRealPath(oldPath)); //读入原文件 
    FileOutputStream fs = new FileOutputStream(servletContext.getRealPath(newPath));
    
    byte[] buffer = new byte[1444]; 
    // int length; 
    while ( (byteread = inStream.read(buffer)) != -1) { 
    // bytesum += byteread; //字节数 文件大小 
    // System.out.println(bytesum); 
    fs.write(buffer, 0, byteread); 
    
    } 
    inStream.close();
    
     fs.close();  
    // System.out.println("复制成功");
    } 
    return true;
    } 
    catch (Exception e) { 
    System.out.println("复制单个文件操作出错"); 
    e.printStackTrace(); 
    return false;
    
    } 
    
    } 
    
    
    
    /** 
    * 复制单个文件 
    * @param tempalteFileFolderRoute String 临时文件夹路径相对路径 如:c:/fqf 
    * @param newPath String 资源文件夹路径相对路径 如:f:/fqf1 
    * @return boolean 
    */ 
    public static boolean copyFileFolder(String tempalteFileFolderRoute, String newPath) { 
    // System.out.println("执行复制文件操作 源文件路径"+servletContext.getRealPath(oldPath)+" 目的文件路径 "+servletContext.getRealPath(newPath));
    
    try { 
    File srcFile = new File(servletContext.getRealPath(tempalteFileFolderRoute));
    if (!srcFile.exists()) {
    System.out.println("文件夹路径不存在!!!!!!!!");
    srcFile.mkdirs();
    }
    
    
    File srcFile1 = new File(servletContext.getRealPath(newPath));
    if (!srcFile1.exists()) {
    System.out.println("文件夹路径不存在!!!!!!!!");
    srcFile1.mkdirs();
    }
    
    
    String path=servletContext.getRealPath(tempalteFileFolderRoute);
    
    File file = new File(path); 
    String[] tempList = file.list(); 
    File temp = null; 
    for (int i = 0; i < tempList.length; i++) { 
    
    String tempRoute=tempalteFileFolderRoute+"/"+tempList[i];
    String normalRoute=newPath+"/"+tempList[i];
    
    File oldfile = new File(servletContext.getRealPath(tempRoute)); 
    
    
    File myFileName = new File(servletContext.getRealPath(normalRoute)); 
    int byteread = 0; 
    try{ 
    if (!myFileName.exists()) { 
    myFileName.createNewFile(); 
    } 
    }catch (Exception e) { 
    System.out.println("新建文件操作出错"); 
    e.printStackTrace(); 
    return false;
    } 
    
    
    if (oldfile.exists()) { //文件存在时 
    InputStream inStream = new FileInputStream(servletContext.getRealPath(tempRoute)); //读入原文件 
    FileOutputStream fs = new FileOutputStream(servletContext.getRealPath(normalRoute));
    
    byte[] buffer = new byte[1444]; 
    // int length; 
    while ( (byteread = inStream.read(buffer)) != -1) { 
    // bytesum += byteread; //字节数 文件大小 
    // System.out.println(bytesum); 
    fs.write(buffer, 0, byteread); 
    
    } 
    inStream.close(); 
    //System.out.println("复制成功");
    
    } 
    }
    return true;
    }
    catch (Exception e) {
    System.out.println("复制文件操作出错"); 
    e.printStackTrace(); 
    return false;
    
    
    
    } 
    }
    
    
    
    
    
    
    
    /*para
    source 源文件目录 
    dest 复制文件目录
    para*/
    /*复制文件*/
    public static void copyFile2(String source, String dest) { 
    System.out.println("执行复制文件操作 源文件路径"+servletContext.getRealPath(source)+" 目的文件路径 "+servletContext.getRealPath(dest));
    
    
    
    File srcFile = new File(servletContext.getRealPath("/uploads/styleItemTemplate"));
    System.out.println(srcFile);
    if (!srcFile.exists()) {
    System.out.println(servletContext.getRealPath(dest)+" 路径不存在!!!!!!!!");
    srcFile.mkdirs();
    }
    
    try { 
    File in = new File(servletContext.getRealPath(source));//源文件目录 
    File out = new File(servletContext.getRealPath(dest)); //复制文件目录 
    FileInputStream inFile = new FileInputStream(in); 
    FileOutputStream outFile = new FileOutputStream(out); 
    byte[] buffer = new byte[102400]; 
    int i = 0; 
    while ((i = inFile.read(buffer)) != -1) { 
    outFile.write(buffer, 0, i); 
    }//end while 
    inFile.close(); 
    outFile.close(); 
    System.out.println("复制成功");
    }//end try 
    catch (Exception e) { 
    System.out.println(e.toString());
    }//end catch 
    }//end copyFile 
    
    
    
    
    /*删除文件方法*/
    public boolean deleteFile(String sPath) { 
    System.out.println("执行删除文件操作 源文件路径"+servletContext.getRealPath("/uploads/styleItem")+sPath);
    
    boolean flag = false; 
    File file = new File(servletContext.getRealPath("/uploads/styleItem")+sPath); 
    // 路径为文件且不为空则进行删除 
    if (file.isFile() && file.exists()) { 
    file.delete(); 
    flag = true; 
    } 
    return flag; 
    } 
    
    }
    
     
    
     
    
    /************************************************************************调用*****************************************************************************/
    
    @RequestParam MultipartFile[] imgRoute
    
    uuid-->file name
    
    UploadUtil.fileSave_other(uploadFiles[k], uuid,
    request);
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
    /*************************************************************************************前端 代码**************************************************************************************/
    
        /**********************************************************jsp**************************************************************/
    
    <input type="file" name="imgRoute" class="fileRouteIn" value=""
    style="200px; display:inline;" required="required" />
    
     
    
      /******************************************************************************js*************************************************************************/
    
     
    
    /* 发送上传文件请求 
    para--uploadFiles 选择文件 fileRouteIn--name 
    para--num    选择文件 fileRouteIn--index序号 
    */
    function uploadFile(uploadFiles, num) {
    // alert(num);
    $(".fileRouteIn:eq(" + num + ")").text(
    $(".fileRouteIn:eq(" + num + ")").val());
    var token = $.cookie("token");
    $.ajaxFileUpload({
    url : "api/v1/styleItems/uploadFile?token=" + token,
    type : "POST",
    secureuri : false,
    fileElementId : uploadFiles,//该参数名要与input【type=‘file’】 的name相同
    dataType : "json",
    success : function(response) {
    if (response.status == 200) {
    blackDialog.show(response.uploadFileRoute);
    var valueaa = response.uploadFileRoute;
    
    $(".fileRouteIn:eq(" + num + ")").attr("value",
    response.uploadFileRoute);
    $(".viewMessege:eq(" + num + ")").text("所选文件上传成功");
    console.log(valueaa + "213123");
    blackDialog.show(response.message);
    
    $(".processbar:eq(" + num + ")").width("95%");
    
    }
    
    else {
    window.clearInterval(bartimer);
    $(".processbar:eq(" + num + ")").width("0%");
    $(".processbar:eq(" + num + ")").text(0 + "%");
    $(".viewMessege:eq(" + num + ")").text("文件上传失败");
    blackDialog.show(response.message);
    
    }
    
    }
    });
    
    }
    
     
  • 相关阅读:
    hibernate3.2多表关联查询常见问题
    Map 四种同步方式的性能比较
    架构师书单(2010版)
    强碱性食品 高嘌呤食物
    Linux内核crash/Oops异常定位分析方法
    linux驱动基础系列linux spi驱动框架分析
    vmware server 虚拟机与宿主机之间共享网络设置问题
    花生壳
    Groove 线上办公室
    coolit
  • 原文地址:https://www.cnblogs.com/dingjiuping/p/7505683.html
Copyright © 2020-2023  润新知