精华内容
下载资源
问答
  • 下载到本地路径出现异常
    千次阅读
    2021-03-06 14:06:33

    java创建文件时提示找不到指定路径的解决方法

    发布时间:2020-06-23 21:40:04

    来源:亿速云

    阅读:319

    作者:Leah

    这篇文章将为大家详细讲解有关java创建文件时提示找不到指定路径的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    创建文件时,提示找不到指定的路径,那是因为没有创建目录导致的。

    比如创建一个文件:File file = new File(“C:/test.txt”);

    file.createNewFile();

    这样是正确的,不会出现任何错去异常。

    但是这样就出现 “系统找不到指定的路径”的异常:File file = new File(“C:/test/test.txt”);

    file.createNewFile();

    后来找到了答案,问题出在了:当你创建文件时,首先应该创建文件的父目录(除非你手动创建过了父目录)。

    也就是这样写创建多级目录的文件:File fileDir = new File(“C:/test/”);

    fileDir.mkdirs();

    File file = new File(“test.txt”);

    file.createNewFile();

    更多相关内容:

    关于java创建文件时提示找不到指定路径的解决方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

    更多相关内容
  • 最后进行文件的保存,文件保存过程中可能会出现异常,因此用try...catch: try { file.transferTo(new File(folder,saveName)); String filePath = savePath + "\\" + saveName; return new String("文件路径为:" +...

    首先基于 springboot 实现的,其他场景下可以引入相应的 jar 包后进行整合。

    首先写入一个方法,方法的参数为传入的文件,方法的返回值自定义,这里返回类型为 String ,返回文件的存储地址。

    public String uploadToLocal(MultipartFile file){
    }

    接着在方法中进行文件的具体存取操作。

    首先获取上传文件的原始名称:

    String originName = file.getOriginalFilename();

    接着可以指定只能上传 pdf,doc,docx 类型的文件,这里需要先找出文件的后缀来判断上传文件的类型是否合法:

    先将指定的后缀存在 set 集合中, set 集合的底层是哈希表,时间复杂度为 O(1)

            Set<String> set = new HashSet<>();
            set.add(".pdf");
            set.add(".doc");
            set.add(".docx");
            set.add(".jpg");

    接着找出文件的后缀,首先遍历获取的原始文件名,通过下标遍历这个原始名称,找到第一个"."后结束遍历,然后调用 String.subString(int index) 得到字符串从 index (包括)一直到后面所有的字符串,得到的字符串就是文件的后缀。

            int count = 0;
            for(int i = 0; i < originName.length(); i++){
                if(originName.charAt(i) == '.'){
                    count = i;
                    break;
                }
            }
            String endName = originName.substring(count);

    同时也可以获取到文件类型,比如 ".pdf" 将"."去掉得到类型 pdf

    String fileType = originName.substring(count + 1);

    再判断文件是否是合法类型,不合法则直接返回错误信息:

            if(!set.contains(endName)){
                return new String("上传的文件类型错误,只能上传pdf,doc,docx,jpg类型的文件");
            }

    如果文件类型合法,进行接下来的操作。

    首先确定文件的保存路径,可以自定义。这里直接保存在项目父目录下,加入项目叫 test,路径为

    test/files/文件类型/保存文件时候的时间(yyyyMMdd)年月日/文件原始名称

    这就需要获取当天的日期并格式化为yyyyMMdd格式,并获取文件类型。

    路径采用拼接的方式,先获取当前项目的路径然后一步步拼接:

            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            String format = sdf.format(new Date());
            String savePath = System.getProperty("user.dir") + "\\" + "files" +   "\\" + fileType + "\\" + format;

    最后进行文件的保存,文件保存过程中可能会出现异常,因此用try...catch

            try {
                file.transferTo(new File(folder,saveName));
                String filePath = savePath + "\\" + saveName;
                return new String("文件路径为:" + filePath);
            } catch (IOException e){
                return new String(e.getMessage());
            }

    最后返回的String为文件的存储地址,即保存路径 + 文件名。

    接下来是方法的完整代码:

        public String uploadToLocal(MultipartFile file){
            // 获取文件原本的名字
            String originName = file.getOriginalFilename();
            // 判断文件是否是pdf文件
            Set<String> set = new HashSet<>();
            set.add(".pdf");
            set.add(".doc");
            set.add(".docx");
            // 取出文件的后缀
            int count = 0;
            for(int i = 0; i < originName.length(); i++){
                if(originName.charAt(i) == '.'){
                    count = i;
                    break;
                }
            }
            String endName = originName.substring(count); //取出文件类型
            String fileType = originName.substring(count + 1); //文件类型
            if(!set.contains(endName)){
                return new String("上传的文件类型错误,只能上传pdf,doc,docx类型的文件");
            }
            // 创建保存路径
            //日期格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            String format = sdf.format(new Date());
            String savePath = System.getProperty("user.dir") + "\\" + "files" +   "\\" + fileType + "\\" + format;
            // 保存文件的文件夹
            File folder = new File(savePath);
            // 判断路径是否存在,不存在则自动创建
            if(!folder.exists()){
                folder.mkdirs();
            }
            String saveName = originName;
            try {
                file.transferTo(new File(folder,saveName));
                String filePath = savePath + "\\" + saveName;
                return new String("文件路径为:" + filePath);
            } catch (IOException e){
                return new String(e.getMessage());
            }
        }

    方法可用作工具类,也可以直接用作后端接口。

    展开全文
  • 本地路径是 D:\ ..\..\ 地址栏中的路径 是/ 正的斜杠 示例 上传本地的绝对路径 D:\soft\apache-tomcat-7.0.41\webapps\AppInfoSystem\statics\uploadfiles\com.doodleapps.powdertoy-V1.1.2.apk String path ...

    本地路径是 D:\  ..\..\

    地址栏中的路径 是/  正的斜杠

    示例

    上传到本地的绝对路径

    D:\soft\apache-tomcat-7.0.41\webapps\AppInfoSystem\statics\uploadfiles\com.doodleapps.powdertoy-V1.1.2.apk

    String path = request.getSession().getServletContext().getRealPath("statics" + File.separator + "uploadfiles");

    得到的是:D:\soft\apache-tomcat-7.0.41\webapps\AppInfoSystem\statics\uploadfiles

                  一、  什么servletContext()就是D:\soft\apache-tomcat-7.0.41\webapps\AppInfoSystem\

                      补充:WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,

                                 它代表当前web应用。

                    二、getRealPath(“ xxx”) 表示 web项目绝对路径衔接上一下级子目录xxx

                              D:\soft\apache-tomcat-7.0.41\webapps\AppInfoSystem\statics\uploadfiles


                               

    数据库存放--下载路径

    /AppInfoSystem/statics/uploadfiles/com.doodleapps.powdertoy-V1.1.2.apk

    用户访问下载路径的时候

    localhost:8080/AppInfoSystem/statics/uploadfiles/com.doodleapps.powdertoy-V1.1.2.apk

    如何实现?

    调用request.getContextPath() ,获得:  /AppInfoSystem  (   /  +项目名  ) 

           downloadLink = request.getContextPath() + "/statics/uploadfiles/" + apkFileName;

    实战

    @RequestMapping(value="/addversionsave", method=RequestMethod.POST)
      public String addVersionSave(AppVersion appVersion, HttpSession session, 
    		  HttpServletRequest request, 
    		  @RequestParam(value="a_downloadLink", required=false) MultipartFile attach)
      {
        String downloadLink = null;// 下载路径
        String apkLocPath = null; // apk当地路径
        String apkFileName = null;// apk文件名
        if (!(attach.isEmpty())) {
        	//在statics下创建uploadfiles目录,后形成上传文件的本地保存绝对路径
        	
          String supPath = request.getSession().getServletContext().getRealPath("statics" + File.separator + "uploadfiles");
          //上传的文件存放的绝对父级目录
          this.logger.info("uploadFile path: " + supPath);
          //文件的原始名
          String oldFileName = attach.getOriginalFilename();
          //获得原始名的后缀
          String suffix = FilenameUtils.getExtension(oldFileName);
          if (suffix.equalsIgnoreCase("apk")) {
            String apkName = null;//设置为null ,然后重新命名成唯一名字
           
           //获得app_inf表格中的APKName字段值,因为这个是唯一标识的(业务设计规定的)
            apkName = this.appInfoService.getAppInfo(appVersion.getAppId(), null).getAPKName();
           
            //url路径传参:error="error1":APK信息(APK名称)不完整!
            if ((apkName == null) || ("".equals(apkName)))
              return "redirect:/dev/flatform/app/appversionadd?id=" + appVersion.getAppId() + 
                "&error=error1";
            //拼接:com.doodleapps.test1  -   HV1.1.4.apk
            apkFileName = apkName + "-" + appVersion.getVersionNo() + ".apk";
            //将上级绝对本地路径supPath(/statics/uploadfiles)和apkFlieName拼接成一个文件路径,然后创建文件
            File targetFile = new File(supPath, apkFileName);
            if (!(targetFile.exists()))//目标文件名不存在的话,新建一个
            	//创建path的下一级目录:apkFileName
              targetFile.mkdirs();
            try
            {
            	//文件上传,本质就是将attach中绑定的文件数据,复制到新建的文件中
              attach.transferTo(targetFile);
            }
            catch (Exception e) {
              e.printStackTrace();
              //上传是出现异常的话,那么返回页面提示语:error2,上传失败
              return "redirect:/dev/flatform/app/appversionadd?id=" + appVersion.getAppId() + 
                "&error=error2";
            }
            // apk文件的服务器存储路径
            apkLocPath = supPath + File.separator + apkFileName;
            
            
            //下载链接,示例  /AppInfoSystem/statics/uploadfiles/com.doodleapps.powdertoy-V1.1.31.apk
            //request.getContextPath() 得到的就是项目名路径 /AppInfoSystem
            downloadLink = request.getContextPath() + "/statics/uploadfiles/" + apkFileName;
    
          } else {
        	  //若后缀名不是apk的话,页面返回 文件格式错误
            return "redirect:/dev/flatform/app/appversionadd?id=" + appVersion.getAppId() + 
              "&error=error3";
          }
        }
        //将数据存储到数据库中,使用setter()
        //创建人Id
        appVersion.setCreatedBy(((DevUser)session.getAttribute("devUserSession")).getId());
        //创建时间
        appVersion.setCreationDate(new Date());
        //下载路径(一定是绝对路径)如:/AppInfoSystem/statics/uploadfiles/com.kleientertainment.doNotStarvePocket-V1.1.2.apk
        appVersion.setDownloadLink(downloadLink);
    /*    apk文件的服务器存储路径 如:D:\soft\apache-tomcat-7.0.41\webapps\
     *            AppInfoSystem/statics/uploadfiles/com.kleientertainment.doNotStarvePocket-V1.1.2.apk  
    */    appVersion.setApkLocPath(apkLocPath);
        //apk文件名,如:com.kleientertainment.doNotStarvePocket-V1.1.2.apk
        appVersion.setApkFileName(apkFileName);
        try {
        	//将appVersion对象添加到数据库中
          if (this.appVersionService.appsysadd(appVersion)){
            return "redirect:/dev/flatform/app/list";
          }
        }
        catch (Exception e){
          e.printStackTrace();
          return "redirect:/dev/flatform/app/appversionadd?id=" + appVersion.getAppId(); 
          }
          return "redirect:/dev/flatform/app/appversionadd?id=" + appVersion.getAppId();
      }
    

     

    展开全文
  • (1)可能出现的问题是: File file = new File(文件路径) : 文件路径没有截止文件名,所以找不;(2)下载的文件包含中文字符: 也会出现此问题;建议下载文件设置为英文字符或数字;下载文件的流程: /** * ...

    (1)可能出现的问题是: File file = new File(文件路径) : 文件路径没有截止到文件名,所以找不到;

    (2)下载的文件包含中文字符: 也会出现此问题;

    建议下载文件设置为英文字符或数字;

    下载文件的流程:


        /**
         * 下载文件
         * @param id
         * @param res
         * @param request
         */
        @ApiOperation(value="下载文件", notes="下载文件", produces="application/json")
        @GetMapping(value="/download/{id}", produces = "application/json")
        public void downloadTemplate(@PathVariable("id") Long id, HttpServletResponse res, HttpServletResponse request) {
            MesProductionFilesEntity entity = mesFilesService.queryObject(id);
            if (null != entity) {
                String filepath = null;
                try {
                    filepath =entity.getFilePath();
                    downloadResultFile(res, request, filepath, entity.getFileName());
                    logger.info("下载成功!");
                } catch (Exception e) {
                    e.printStackTrace();
                    logger.error("下载文件异常");
                }
            }else {
                logger.error("下载失败:根据ID 未能找到文件信息!");
            }
        }
        /**
         * 下载文件的方法
         * @param res response对象
         * @param filePath 待下载的文件名
         * @param downloadName 下载给用户的文件名
         */
        private void downloadResultFile(HttpServletResponse res, HttpServletResponse request, String filePath, String downloadName) {

            try {
           if (request.getHeader("User-Agent") != null && request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
                    downloadName = URLEncoder.encode(downloadName, "UTF-8");
                } else {
                    downloadName = new String(downloadName.getBytes("UTF-8"), "UTF-8");
                }
            }
            catch (UnsupportedEncodingException ue) {
                logger.error("download filename convert encoding exception ", ue);
            }

            res.setContentType("application/octet-stream");
            res.addHeader("Content-Disposition", "attachment; filename=" + downloadName);
            BufferedInputStream bis = null;
            BufferedOutputStream out = null;
            File file = new File(filePath);
            try {
                bis = new BufferedInputStream(new FileInputStream(file));
                out = new BufferedOutputStream(res.getOutputStream());
                byte[] buff = new byte[2048];
                while (true) {
                    int bytesRead;
                    if (-1 == (bytesRead = bis.read(buff, 0, buff.length))) {
                        break;
                    }
                    out.write(buff, 0, bytesRead);
                }
                out.flush();
            } catch (IOException e) {
                logger.error("output template file exception", e);
            } finally {
                IOUtils.closeQuietly(bis);
                IOUtils.closeQuietly(out);
            }
        }

    展开全文
  • 问题描述及错误代码: // 本地运行、打包 图片是ok的 ...// 本地运行 图片是ok的、打包图片找不 (因为图片的路径被解析成了字符串) <img src="/static/images/orderSeeProgress1.png"> /...
  • 如果没有没有中文路径,则获取文件或者获取文件流都是比较简单的。网上有大把的例子,拿来改薄该博就可以了。但一出现中文路径,则难度增加不少。关键是要知道你公司的ftp服务器默认的编码格式。这个很重要!
  • 由于我们创建的File在项目路径/tmp/source/,而transferTo方法预期写入的文件路径为/tmp/tomcat.273391201583741210.8080/work/Tomcat/localhost/ROOT/tmp/source/,我们并没有创建该目录,因此会抛出异常。...
  • java读取FTP文件下载到本地

    万次阅读 2017-03-24 11:15:45
    ftp相当于是自己建一个网盘,然后创建用户,为用户提供上传下载功能。特别是多平台得数据交互,优势还是蛮大的。有兴趣的可以研究一下,限于篇幅,这里主要是讲解java调用ftp。 首先自己创建一个实体类:Ftp.java ...
  • 在ssm框架下,用LayUI(ajax)实现文件上传,以及解决“请求上传接口出现异常”问题 一.框架、样式、异常情况如下: 二、1.在jsp中的body中写按钮和上传后图片放入的框 <div class="layui-form-item layui-...
  • uni-app 图片(文件) 本地存储解决方案

    千次阅读 2020-12-19 13:48:06
    我们时长有这样的需求,文件或图片每一次都从远端下载,导致...假如文件已经存在本地,则取本地路径,否则下载并返回下载路径2、函数需要两个参数,一个是文件的下载路径,一个是与文件相关联的id,用来做文件与下载...
  • 手机产生的垃圾文件更是显得杂乱无章,虽然可以使用系统自带或第三方应用来清理垃圾,但在本地存储还是有大量的文件夹或文件是可以手动删除的。当然,有些数据是自己想保留的,这时就要考虑是哪些应用产生的数据,对...
  • 如果在读取时加上图片的Config参数,可以更有效减少加载的内存,从而有效阻止抛出out of Memory异常另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应,使用了decodeStream之后,...
  • java访问linux服务器读取文件路径

    千次阅读 2021-08-08 01:38:15
    java访问linux服务器读取文件路径 内容精选换一换通过ADC将文件传输Host。参见准备环境完成环境配置。以运行用户登录安装Toolkit组件的服务器。执行命令,将A.java文件传输Host的指定路径下。adc --host xx.xx....
  • Android 异常崩溃日志,捕捉并保存到本地; 前几天因为在省公安厅做一个通讯类之类的应用;碰到个问题,就是download人员信息将信息保存到本地数据库完成的时候,菊花转还没有dismission掉程序就崩溃了;当然...
  • 页面异常导致本地路径泄露 网站安全检测可能会出现这样一项漏洞,漏洞的修复办法: 如果是PHP应用程序/Apache服务器,可以通过修改php脚本、配置php.ini以及httpd.conf中的配置项来禁止显示错误信息: 1.修改...
  • 结果是路径的问题,在这写下 路径的正确写法,方便以后查阅, 路径用 \ 或者 / 表示, 但是最后 图片名的时候 必须用 / 还有 路径前面的 两个点 不能漏掉 人生就像一只储蓄罐,你投入的每一分努力,都会在未来的某一...
  • 如果在读取时加上图片的Config参数,可以更有效减少加载的内存,从而有效阻止抛出out of Memory异常另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应,使用了decodeStream之后,...
  • 昨天在做文件下载的时候在java文件中对下载流进行处理,但是当路径出现中文路径是,直接抛出异常,下面是java文件下载代码: import java.io.File; import java.io.FileInputStream; import java.io.OutputStream;...
  • JavaFx+JFoenix彻底解决Image读取图片路径问题 文章目录JavaFx+JFoenix彻底解决Image读取图片路径问题1.JavaFx... Image加载本地系统文件2.3.Image加载项目ClassPath图片资源 1.JavaFx的Image类加载文件三种策略 ja...
  • 向分区表中加载数据时如下图命令:红色部分为数据路径 load data local inpath ' /sogou_3/500w/sogou.500w.utf8' into table sogou_partition_3 partition(year='2011',month='12',day='30',hour='10')
  • java实现从服务器把多附件打成zip包并下载本地下载路径为浏览器的默认下载路径。 下面为下载zip压缩包相关流程 : 1、找到服务器文件的存放位置,并确保文件存在 2、创建临时文件夹(临时zip 文档存放位置) ...
  • * false:所有文件跑压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败) * * @throws RuntimeException 压缩失败会抛出运行时异常 * */ public static void toZip(String srcDir, ...
  • Springboot通过图片路径形式获取图片

    千次阅读 2020-12-21 11:48:17
    Springboot通过图片路径形式获取图片一致以来都是用 http://127.0.0.1:8888/getPhoto?imgUrl=1.jpg 的形式获取数据,今天突然要 http://127.0.0.1:8888/getPhoto/1.jpg 这样获取图片数据,竟然有点懵逼了。...
  • 异常情况: 服务器环境windows 2016,phpstudy pro部署, php 7.3 ,MySQL5.7.6,出现上图错误。 layui版本:v2.2.6 MIT 其实遇见这种问题是很奔溃,因为这个错误原因,事情往往是是干进度...
  • VUE上传文件夹的三种解决方案

    千次阅读 2020-12-19 16:25:17
    1背景用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通过浏览器上传至...
  • springboot文件上传保存路径问题

    千次阅读 2019-04-27 22:51:16
    最近使用springboot整合富文本编辑器wangeditor,在整合的时候,对于图片上传时候保存路径出现了一些问题,代码如下 @PostMapping("/upload") public Result upload(MultipartFile[] file, HttpServletRequest ...
  • 具体步骤如下:一、目录路径太长1、如下图,这个文件找不,是因为目录路径太长,Windows识别不了这么长的目录,首先,这个目录上级目录已经是Windows的临时缓存目录,然后是压缩包的一个缓存目录再套下一...
  • 1.wx.cloud.downloadFile 字段 说明 fileID 云文件 ID(必填) success 回调 报错:fileID should be string instead of undefined 解决方案fileID需要对...下载文件资源到本地。客户端直接发起一个 HTTP
  • 出现“文件保存异常路径“D:\\20190527”的访问被拒绝”错误。 文件属性各项正常。发现是因为启的服务登录问题。 打开该服务项的属性,打开登录,将此账户勾选到本地系统账户,确定,然后重启启动服务。OK。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 132,002
精华内容 52,800
关键字:

下载到本地路径出现异常