linux目录下的一级子目录过多,导致创建目录失败(java file mkdirs)

文章详细介绍了如何通过在目录下创建以年月日为单位的目录来解决Linux系统中目录数量上限导致的java程序运行异常问题,避免了使用mkdirs()方法创建目录时遇到的'Toomanylinks'错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个跑了几年的java程序,最近突然不能运行了。只要一调用就报java.io.FileNotFoundException、java.lang.NullPointerException异常 
仔细查看源代码,发现在新建输出流前,就调用了创建目录的代码mkdirs(). 
左思右想不得其果,这套程序在本地运行都是正常的。。。 
感觉应该是环境的原因,生产环境是linux的,初步分析是不是磁盘满了,用命令df -h / 查看一下,发现还有很多磁盘空间可以使用。 
看来不是这个原因导致的|伦理电影 www.akdy.cn
再进入程序操作文件的目录,使用linux命令mkdir ,未创建成功,提示信息如下: 
mkdir: cannot create directory `devexception': Too many links 

发现这个目录下已经生成了好多子目录,用ls命令查看,发现一直在刷屏,完全展示不下。 
换一个命令查看: 
find 。/devexception -type d | wc -l 
显示:31999 
查下资料,发现这个数字已经达到了linux下某个文件夹下的子目录数的上限。怪不得调用类java.io.File的mkdirs()方法了也没创建目录 

为了规避这个异常,一般都是让某个文件夹下的目录不会跟着时间的推移而无限制的上涨,有个常用的方法就是在这个目录下新建以年月日为单位的目录 
如./2014/07/02,这样这个目录的子目录会分配到具体某一天的目录下,某一天的数据也会放到这一天所在目录下,随着时间的推移,某个子目录也不会 
一直递增。从而突破linux系统的限制。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值