file exists java 出错_[ BUG 记录] 薛定谔的 file :为什么文件明明存在但是 file.exists 却返回 false..._林欣浩的博客-程序员秘密

技术标签: file exists java 出错  

记录一个项目中遇到的诡异 bug:

这是一个 java 项目,打包成可执行的 jar,在 Linux 服务器上通过 cronjob 定期执行。

每次执行,都会扫描服务器指定目录,如果目录中有文件,则进行处理,否则直接退出

下面是示例代码,很简单:

public class App{

private static final String FOLDER = "/tmp/work";

public static void main(String[] args){

File folder = new File(FOLDER);

File[] files = folder.listFiles();

if (files != null && files.length > 0) {

for (File file : files) {

handleFile(file);

}

}

}

}

复制代码

某天客户反映说,程序无法正常导入文件。

拿到日志和导入失败的文件之后,开始 debug:

首先,程序的日志里的错误信息是 FileNotFoundException,也就是说当程序调用 handleFile 方法,对传入的 File 对象进行读取时,发现文件找不到了.

但是这个文件肯定是存在的,第一是客户可以通过 ls -l 看到,第二是程序可以通过 folder.listFiles 获

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29391747/article/details/114815767

智能推荐

Android传感器源码学习_安卓开发传感器代码_qq_43294789的博客-程序员秘密

Android传感器源码学习系统中,传感器系统的Java部分的实现文件路径系统中,传感器系统的Frameworks层的代码路径系统中,传感器系统的JNI部分的代码路径文件android_hardware_SensorManager.cpp的功能是实现文件SensorManager.java中的Native函数,通过调用SensorManager.cpp和SensorE...

html语言中标签的class属性的作用_html中class标签的作用_陆老师Peter的博客-程序员秘密

其实class属性的值对应的就是你定义的css的名字,它和class的属性值相对应。例如:<td class="t1"></td><style type="text/css">.t1 {font-size: 12px;//字体大小line-height: 22px;//文本行高color: #000000;//文本颜色margin: 6px;//...

程序员学金融-金融科普(5)-净利润_阿饭同学的博客-程序员秘密

首先需要声明,本文纯属一个毫无远见和真才实学的小小散户的愚昧见解,仅供参考。净利润(收益)是指在利润总额中按规定交纳了所得税后公司的利润留成,一般也称为税后利润或净利润。净利润的计算公式为:净利润=利润总额×(1-所得税率)净利润是一个企业经营的最终成果,净利润多,企业的经营效益就好;净利润少,企业的经营效益就差,它是衡量一个企业经营效益的主要指标。注意: 净利润因为涉及的科目和利益较多,因此造假

python3中的max函数_Python3 max() 函数_瀚忄的博客-程序员秘密

Python3 max() 函数描述max() 方法返回给定参数的最大值,参数可以为序列。语法以下是 max() 方法的语法:max(x,y,z,....)参数x -- 数值表达式。y -- 数值表达式。z -- 数值表达式。返回值返回给定参数的最大值。实例以下展示了使用 max() 方法的实例:#!/usr/bin/python3print("max(80,100,1000)...

教程,word导出为pdf既要书签和链接又要高清图片_word模板导出 用书签_cbszju的博客-程序员秘密

一、谁需要这个教程:用word写论文等转成PDF,既要保留书签和超链接,又要保留高清图片。这个教程应该是全网首发,google都找不到我这样的解决办法。二、必备条件1、adobe acrobat 本人用的是破解版,adobe acrobat X ,完全安装模式安装。2、adobe acrobat 参考文章https://blog.csdn.net/weixin_30568715/article/details/96413531 安装好autobookmark 插件。装完工具栏会有这个增效工具出现

Oracle partition 表分区详解_爱游戏爱动漫的肥宅的博客-程序员秘密

随着表中行数的增多,管理和性能影响也将随之增加。备份将要花费更多时间,恢复也将 要花费更多的时间,对整个数据表的查询也将花费更多时间。通过把一个表中的行分为几个部分,可以减少大型表的管理和性能问题,以这种方式划分发表数据的方法称为对表的分区。

随便推点

以算法岗为例:我最想对入职前的自己说些什么?_zenRRan的博客-程序员秘密

来自:机器学习与推荐系统进入算法岗的正式工作虽然只有半年多,但从 19 年 1 月就在算法岗开始实习,算下来到现在都有两年多的工作经验了,不过正式参加工作以后还是有了很多新的感悟,这篇文章...

DatePicker和TimePicker在5.X的使用_小导弹的博客-程序员秘密

之前遇到问题都是自己做做笔记记录下来了也懒得写博客,后来发现好多公司都会看你的博客,都不在意你的笔记。最近听好多朋友说 找工作要硬东西,不会只听你说技术,这才感到博客的重要性。索性以后有时间就把碰到的问题写写吧,简单归简单,重在帮助需要的人。(网上没有的效果我也特别想写)DatePicker和TimePicker在5.X显示和4.X显示同样效果做时间选择器的都知道正常的配置在4.X和5.X是不一样

VS Code编译Latex避坑指南_KerwinKong的博客-程序员秘密

为了顺利毕业,当年毕业前曾经尝试了诸多的Latex编辑器和编译器,有Texlive自带的Texworks editor,也有自带大量数学符号省去查找麻烦的Texstudio,以及心血来潮下尝试的Atom,到现在需要重新拾起Latex时发现前两者的编辑感受着实不太令人满意,而Atom由于过多的插件安装,导致启动速度实在不尽如人意,最后选择了新方案:VS Code+Texlive+SumatraPDF...

Ext-Grid-HttpProxy-分页_weixin_30483495的博客-程序员秘密

1、客户端代码<%/***@authorlzb*Createdon2008-11-29*练习使用Ext-form-grid**/%><%@pagecontentType="text/html;charset=UTF-8"%><%@includefile="http://www.cnblog...

使用gitlab runner 进行CI(三):使用sonarqube做c++的静态检查_sonarqube c++代码检查_CodingForLove的博客-程序员秘密

1. gitlab-ci.yml的配置1.1 几个基本概念1.2 使用CI进行代码检查demo2. Sonarqube安装和配置2.1 Sonarqube安装2.2 数据库配置2.3 sonar-scanner安装2.4 sonar-cxx插件安装2.4 启动2.5 gitlab插件安装2.6 创建项目3. Gitlab-CI配置4. 进阶配置4.1 规则配置4.2 阈值设置4.3 设置自动将扫描结果以评论形式写到gitlab结语前两次我们讲了如何配置gitlab runner(坑挖了挺久,因为是挺久前弄的

2021-05-14 Redis面试题 简单描述下Redis线程模型_微软MVP Eleven的博客-程序员秘密

简单描述下Redis线程模型Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器(file event handler)。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。文件事件处理器使用 I/O 多路复用(multiplexing)程序来同时监听多个套接字, 并根据套接字目前执行的任务来为套接字关联不同的事件处理器。当被监听的套接字准备好执行连接应答(accept)

推荐文章

热门文章

相关标签