`

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

阅读更多
一个跑了几年的java程序,最近突然不能运行了。只要一调用就报java.io.FileNotFoundException、java.lang.NullPointerException异常
仔细查看源代码,发现在新建输出流前,就调用了创建目录的代码mkdirs().
左思右想不得其果,这套程序在本地运行都是正常的。。。
感觉应该是环境的原因,生产环境是linux的,初步分析是不是磁盘满了,用命令df -h / 查看一下,发现还有很多磁盘空间可以使用。
看来不是这个原因导致的
再进入程序操作文件的目录,使用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系统的限制。
参考:http://www.devexception.com/j2se/545904.htm
2
2
分享到:
评论
7 楼 devexception 2014-07-04  
smallratluobin 写道
细节的问题都值得研究

嗯,是啊
6 楼 smallratluobin 2014-07-03  
细节的问题都值得研究
5 楼 devexception 2014-07-03  
lz958942 写道
真心有用啊


确实感觉挺有用的哈
4 楼 devexception 2014-07-03  
david_je 写道
为什么不考虑备份?

考虑备份是指?可以说得详细点吗?
3 楼 david_je 2014-07-03  
为什么不考虑备份?
2 楼 lz958942 2014-07-03  
真心有用啊
1 楼 cdhvs911 2014-07-02  
好详细啊,解决了一个疑惑我好久的问题。

相关推荐

    java file类操作实例

    - `listFiles()`方法返回一个`File`对象数组,包含了指定目录下所有文件和子目录的完整路径。 在实际开发中,`File`类经常与其他I/O流结合使用,例如读写文件内容。这些基本操作是Java文件操作的基础,对于理解和...

    Java中的目录操作详解.pdf

    1. 使用java.io.File类遍历目录:File类提供了listFiles()方法来获取目录下的文件和子目录列表。可以使用递归函数遍历子目录。 Java代码示例: ```java File dir = new File("path/to/directory"); File[] files = ...

    Java语言编写的Linux简单命令解释器

    4. **list命令**:`list`通常对应于Linux的`ls`命令,用于列出目录中的文件和子目录。Java实现可能需要遍历指定目录,使用`File`类来获取文件和目录信息,并打印出来。 5. **cd命令**:`cd`命令用于切换当前工作...

    java.io包中的File类.doc

    - `File(String parent, String child)`:接受两个字符串参数,第一个参数表示父目录的路径,第二个参数表示子文件或子目录的名称。 #### 四、File类的常用方法 `File`类定义了许多方法来获取和设置`File`对象的...

    java中File相关的类和IO流的知识

    对于非空目录,需要先删除其下的所有文件和子目录。 至于IO流,Java中的I/O操作主要涉及输入流(InputStream)和输出流(OutputStream)接口及其子类,它们用于读取和写入数据。FileInputStream和FileOutputStream...

    javaIO流笔记

    // 创建一个File对象表示E盘下javaTest目录中的lesson目录中的1.txt文件 File file = new File("E:\\javaTest\\lesson\\1.txt"); ``` 以上示例展示了如何通过不同的构造函数创建`File`对象。 ##### 目录操作 - `...

    java 模拟windows文件操作

    - **创建目录**: 使用`file.mkdir()`或`file.mkdirs()`创建单级或多级目录。 - **遍历目录**: 可以使用`File.list()`获取目录下的文件名列表,或`File.listFiles()`获取目录下所有文件和子目录的File对象。 5. **...

    java中的IO整理完整版

    `list()`方法返回一个字符串数组,包含了目录中的所有文件和子目录的名称。如果目录为空,或者访问权限不足,`list()`可能会返回`null`。 Java的IO流是处理输入和输出的核心组件。它们分为字节流和字符流,字节流...

    java的io操作

    通过调用`File`对象的`list()`方法,可以获取到一个字符串数组,其中包含了目录中的所有文件和子目录的名称。然后遍历这个数组并打印出来。 总的来说,Java的IO操作提供了丰富的功能,包括文件和目录的创建、删除、...

    3Java SE(下).doc

    对于目录操作,`listFiles()`方法用于获取目录下的所有子项(文件或子目录),返回一个`File`对象数组。如果你想过滤子项,可以使用`FileFilter`接口。自定义一个类实现`FileFilter`,重写`accept()`方法来定义筛选...

    Java中文件管理.pdf

    此外,`File`类还支持遍历目录中的文件和子目录,通过`list()`或`listFiles()`方法可以获取目录中的文件列表。这些方法是进行文件操作和管理的基础,开发者可以根据需求组合使用,实现复杂的文件系统操作。 总之,...

    Java-File类学习总结

    - `File(File file, String child)`:基于父目录File对象和子文件或子目录名创建File对象。 - `File(URI uri)`:根据统一资源标识符(URI)创建File对象。 4. **方法** - **创建**: - `createNewFile()`:创建...

    Java-文件操作File类

    - `listFiles()`:返回目录下的所有文件和子目录的File对象数组,同样不包括隐藏文件。 示例代码: ```java File dir = new File("io"); String[] entries = dir.list(); for (String entry : entries) { System...

    java IO数据流

    // 创建目录 File mydisk = new File("D:\\mydisk"); File secondDisk = new File("D:\\secondDisk"); // 创建文件 File oneTxt = new File(mydisk, "one.txt"); boolean created = oneTxt.createNewFile(); ...

    文件系统操作-自己写的

    通过使用`File`类,开发者可以执行一系列基本操作,如创建文件、读取文件属性、重命名文件、删除文件、创建目录、删除目录等。此外,`File`类还实现了`Serializable`和`Comparable`接口,这意味着`File`对象可以被...

    Java8文件操作.pptx

    创建目录则可以使用`mkdir()`或`mkdirs()`,区别在于`mkdirs()`会创建多级目录,而`mkdir()`只创建单级目录。 在进行文件操作时,还需要考虑字符编码问题。Java 8默认使用平台默认的字符编码,但可以通过指定`...

    IO总结处理

    `listFiles()`方法返回一个`File`数组,包含了指定目录下的所有文件及子目录的对象。这对于进一步处理文件非常有用。 示例代码如下: ```java import java.io.*; class Hello { public static void main(String...

    Java软件开发实战 Java基础与案例开发详解 13-1 Java IO 共9页.pdf

    - **浏览目录中的文件和子目录的方法**: - `listFiles()`: 返回一个包含此File所表示目录中所有文件和目录的数组。 ### 流的分类及使用 Java I/O流按照流向可分为输入流和输出流,按照处理单位可分为字节流和字符...

    目录操作

    1. **创建目录**: 使用`File`类的`mkdir()`或`mkdirs()`方法可以创建单级或多级目录。`mkdir()`只创建当前目录,如果父目录不存在,可能会失败。而`mkdirs()`会递归地创建所有缺失的父目录。 2. **删除目录**: ...

    java File类的基本使用方法总结

    Java中的`File`类是操作文件和目录的核心类,它提供了许多方法来创建、删除、重命名文件以及遍历目录结构。以下是对`File`类基本使用方法的详细解释: 1. **创建文件**: 使用`File`类的`createNewFile()`方法可以...

Global site tag (gtag.js) - Google Analytics