-
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创建文件时提示找不到指定路径的解决方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
更多相关内容 -
Java实现文件上传到本地(自定义保存路径)
2022-02-15 14:24:10最后进行文件的保存,文件保存过程中可能会出现异常,因此用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()); } }
方法可用作工具类,也可以直接用作后端接口。
-
路径是/还是\的区别?下载路径downloadPath和本地路径localPath的区别是什么?如何生成下载路径?
2019-06-08 15:28:07本地路径是 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(); }
-
java文件下载,出现路径找不到File not found(拒绝访问)
2018-04-23 15:11:14(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);
}
} -
解决:vue项目npm run build 打包后 :src路径里面的本地图片找不到。
2019-09-23 13:09:37问题描述及错误代码: // 本地运行、打包 图片是ok的 ...// 本地运行 图片是ok的、打包图片找不到 (因为图片的路径被解析成了字符串) <img src="/static/images/orderSeeProgress1.png"> /... -
解决:获取FTP服务器上带有中文路径的文件乱码问题导致找不到文件或者切换路径异常的问题
2017-12-29 16:02:59如果没有没有中文路径,则获取文件或者获取文件流都是比较简单的。网上有大把的例子,拿来改薄该博就可以了。但一出现中文路径,则难度增加不少。关键是要知道你公司的ftp服务器默认的编码格式。这个很重要! -
Springboot文件上传出现找不到指定系统路径
2020-02-26 00:18:06由于我们创建的File在项目路径/tmp/source/,而transferTo方法预期写入的文件路径为/tmp/tomcat.273391201583741210.8080/work/Tomcat/localhost/ROOT/tmp/source/,我们并没有创建该目录,因此会抛出异常。... -
java读取FTP文件下载到本地
2017-03-24 11:15:45ftp相当于是自己建一个网盘,然后创建用户,为用户提供上传下载功能。特别是多平台得数据交互,优势还是蛮大的。有兴趣的可以研究一下,限于篇幅,这里主要是讲解java调用ftp。 首先自己创建一个实体类:Ftp.java ... -
用LayUI和ajax实现文件上传,“请求上传接口出现异常”问题
2021-07-22 21:33:34在ssm框架下,用LayUI(ajax)实现文件上传,以及解决“请求上传接口出现异常”问题 一.框架、样式、异常情况如下: 二、1.在jsp中的body中写按钮和上传后图片放入的框 <div class="layui-form-item layui-... -
uni-app 图片(文件) 本地存储解决方案
2020-12-19 13:48:06我们时长有这样的需求,文件或图片每一次都从远端下载,导致...假如文件已经存在本地,则取本地路径,否则下载并返回下载路径2、函数需要两个参数,一个是文件的下载路径,一个是与文件相关联的id,用来做文件与下载... -
picACG本地缓存目录_手机上本地存储的哪些文件、文件夹不能删?
2020-11-21 03:23:31手机产生的垃圾文件更是显得杂乱无章,虽然可以使用系统自带或第三方应用来清理垃圾,但在本地存储还是有大量的文件夹或文件是可以手动删除的。当然,有些数据是自己想保留的,这时就要考虑是哪些应用产生的数据,对... -
读取本地路径转换成bitmap的方法,以及避免outmemory
2016-01-07 17:41:05如果在读取时加上图片的Config参数,可以更有效减少加载的内存,从而有效阻止抛出out of Memory异常另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应,使用了decodeStream之后,... -
java访问linux服务器读取文件路径
2021-08-08 01:38:15java访问linux服务器读取文件路径 内容精选换一换通过ADC将文件传输到Host。参见准备环境完成环境配置。以运行用户登录安装Toolkit组件的服务器。执行命令,将A.java文件传输到Host的指定路径下。adc --host xx.xx.... -
Android 异常崩溃日志,捕捉并保存到本地
2016-09-12 16:20:02Android 异常崩溃日志,捕捉并保存到本地; 前几天因为在省公安厅做一个通讯类之类的应用;碰到个问题,就是download人员信息将信息保存到本地数据库完成的时候,菊花转还没有dismission掉程序就崩溃了;当然... -
WordPress页面异常导致本地路径泄漏漏洞修复办法
2013-12-03 10:09:17页面异常导致本地路径泄露 网站安全检测可能会出现这样一项漏洞,漏洞的修复办法: 如果是PHP应用程序/Apache服务器,可以通过修改php脚本、配置php.ini以及httpd.conf中的配置项来禁止显示错误信息: 1.修改... -
HTML,img标签src路径错误及src路径图片无法显示问题,相对路径和绝对路径,超级详细的新手教程。
2021-06-01 22:20:22结果是路径的问题,在这写下 路径的正确写法,方便以后查阅, 路径用 \ 或者 / 表示, 但是最后 图片名的时候 必须用 / 还有 路径前面的 两个点 不能漏掉 人生就像一只储蓄罐,你投入的每一分努力,都会在未来的某一... -
Bitmap——读取本地路径转换成bitmap的方法,以及避免outmemory
2016-08-12 10:42:18如果在读取时加上图片的Config参数,可以更有效减少加载的内存,从而有效阻止抛出out of Memory异常另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应,使用了decodeStream之后,... -
文件下载 FileInputStream不能读取中文路径的问题
2015-09-12 12:51:19昨天在做文件下载的时候在java文件中对下载流进行处理,但是当路径中出现中文路径是,直接抛出异常,下面是java文件下载代码: import java.io.File; import java.io.FileInputStream; import java.io.OutputStream;... -
JavaFx+JFoenix彻底解决Image读取图片路径问题
2020-04-12 00:10:27JavaFx+JFoenix彻底解决Image读取图片路径问题 文章目录JavaFx+JFoenix彻底解决Image读取图片路径问题1.JavaFx... Image加载本地系统文件2.3.Image加载项目ClassPath图片资源 1.JavaFx的Image类加载文件三种策略 ja... -
Hive 笔记之 加载数据时,找不到文件路径异常
2015-09-26 14:55:57向分区表中加载数据时如下图命令:红色部分为数据路径 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实现从linux服务器把多附件打成zip包并下载至本地(一键导出多个附件)
2019-12-30 14:22:59java实现从服务器把多附件打成zip包并下载至本地,下载路径为浏览器的默认下载路径。 下面为下载zip压缩包相关流程 : 1、找到服务器文件的存放位置,并确保文件存在 2、创建临时文件夹(临时zip 文档存放位置) ... -
随手笔记(二十)——— Java服务器下载文件压缩成包下载本地工具类
2019-11-08 16:57:27* false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败) * * @throws RuntimeException 压缩失败会抛出运行时异常 * */ public static void toZip(String srcDir, ... -
Springboot通过图片路径形式获取图片
2020-12-21 11:48:17Springboot通过图片路径形式获取图片一致以来都是用 http://127.0.0.1:8888/getPhoto?imgUrl=1.jpg 的形式获取数据,今天突然要 http://127.0.0.1:8888/getPhoto/1.jpg 这样获取图片数据,竟然有点懵逼了。... -
layui框架实战案例(3):layui上传错误请求上传接口出现异常解决方案
2020-02-05 10:28:20异常情况: 服务器环境windows 2016,phpstudy pro部署, php 7.3 ,MySQL5.7.6,出现上图错误。 layui版本:v2.2.6 MIT 其实遇见这种问题是很奔溃,因为这个错误原因,事情往往是是干进度... -
VUE上传文件夹的三种解决方案
2020-12-19 16:25:171背景用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通过浏览器上传至... -
springboot文件上传保存路径问题
2019-04-27 22:51:16最近使用springboot整合富文本编辑器wangeditor,在整合的时候,对于图片上传时候保存路径出现了一些问题,代码如下 @PostMapping("/upload") public Result upload(MultipartFile[] file, HttpServletRequest ... -
系统找不到指定文件的主要原因是什么_怎么解决 - 驱动管家
2020-12-21 11:45:47具体步骤如下:一、目录路径太长1、如下图,这个文件找不到,是因为目录路径太长,Windows识别不了这么长的目录,首先,这个目录上级目录已经是Windows的临时缓存目录,然后是压缩包的一个缓存目录再套下一... -
微信小程序下载API接口调用异常解决方案
2021-06-25 21:11:301.wx.cloud.downloadFile 字段 说明 fileID 云文件 ID(必填) success 回调 报错:fileID should be string instead of undefined 解决方案fileID需要对...下载文件资源到本地。客户端直接发起一个 HTTP -
文件保存异常 对路径“D:\\20190527”的访问被拒绝
2019-05-27 14:09:46出现“文件保存异常 对路径“D:\\20190527”的访问被拒绝”错误。 文件属性各项正常。发现是因为启的服务登录问题。 打开该服务项的属性,打开登录,将此账户勾选到本地系统账户,确定,然后重启启动服务。OK。 ...