记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径。)

记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径。)

第一想法是路径问题:
1.检查文件路径是否正确

	2.另外,使用OutputStream时,如果文件不存在,会自动创建文件。

但是,如果文件夹不存在,就会报错"系统找不到指定的路径"
解决方法:

1.检查文件名是否正确

2.检查文件后缀是否正确

BUT 这是直接原因并不是 根本原因。。。。。。

原始罪恶:

其实是 我上传的压缩包有问题,因为业务原因,我调整了压缩包里边的文件结构(包括新建文件夹 移动文件等等) 所以 解压缩 生成路径的时候 会将某些文件夹 默认为 文件的名字 比如 我是文件夹/我是文件.txt ; 程序会默认前面这句话为文件名,也就会导致 路径其实是 少了: 我是文件夹 这块。

所以 我导致这个bug的原因就是  在压缩文件中  直接操作了文件;正确的操作手法应该是 解压了  在操作里边的文件 然后  再打包  就不会出现这个问题了!
困扰了我半个小时的bug 就这样  真的服了自己。。。。。。
展开阅读全文

java.io.FileNotFoundException:(系统不到指定的文件)

08-04
具体情况是 java.io.FileNotFoundException: \tynxxwd\pccreditFile\8a8565035da60e47015da613efa7000f (系统不到指定的文件。) 在3.2 服务器上另外一个服务器3.6 上的文件 已经Connected to 10.0.3.6.路径是对的 为啥不到文件! 报错地址![图片说明](https://img-ask.csdn.net/upload/201708/04/1501838872_694365.png) 我在服务器上可以按照该地址到这张图片 ![图片说明](https://img-ask.csdn.net/upload/201708/04/1501838972_569504.png) 以下是具体代码 ```//====== 下载全部图片 @ResponseBody @RequestMapping(value = "downallpicture.json") public JRadReturnMap downallpicture(HttpServletRequest request,HttpServletResponse response) { JRadReturnMap returnMap = new JRadReturnMap(); String appId=request.getParameter("appId"); //出全部照片 List<QzApplnAttachmentDetail>details= addIntoPiecesService.finddetailbyappId(appId); /*for (int i = 0; i < details.size(); i++) { this.downloadDh(response,details.get(i).getUrl(), details.get(i).getFileName()==null?details.get(i).getOriginalName():details.get(i).getFileName()); }*/ this.downloadDh(response,request,details); returnMap.put(JRadConstants.SUCCESS, true); returnMap.addGlobalMessage(CHANGE_SUCCESS); return returnMap; } private void downloadDh(HttpServletResponse response, HttpServletRequest request, List<QzApplnAttachmentDetail> details) { // TODO Auto-generated method stub SFTPUtil.connect(); //压缩文件初始设置 ///usr/pccreditFile String path="F:/"; String base_name = "abcd"; String fileZip = base_name + ".zip"; // 拼接zip文件 String filePath = path + fileZip;//之后用来生成zip文件 //获取所有的图片 File[]files = new File[details.size()]; for (int i = 0; i < details.size(); i++) { String tppath=details.get(i).getUrl(); try { SFTPUtil.sftp.cd(tppath.substring(0,54)); } catch (SftpException e) { // TODO Auto-generated catch block e.printStackTrace(); } //"C:/Users/zhengbo/Pictures/2000/b9ac916e-fbc8-404f-a752-0750fb5805a1_watermark.jpg" System.out.println(tppath); files[i]=new File(tppath); if(files[i].exists()){ System.out.println(files[i]+"exists"); } } BufferedOutputStream bos; try { bos = new BufferedOutputStream(new FileOutputStream(filePath)); ZipOutputStream zos = new ZipOutputStream(bos); ZipEntry ze = null; for (int i = 0; i < files.length; i++) {//将所有需要下载的pdf文件都写入临时zip文件 files[i].getPath().substring(0, 54) System.out.println(files[i].getPath()); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(files[i].getPath())); ze = new ZipEntry(files[i].getName()+i); zos.putNextEntry(ze); int s = -1; while ((s = bis.read()) != -1) { zos.write(s); } bis.close(); } zos.flush(); zos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } ```
©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值