社区
Java SE
帖子详情
file.listFiles()内存溢出如何解决?
mdjz
2009-08-24 09:55:47
想做一个根据文件名查找某个文件夹下的文件功能, 由于文件夹非常庞大, 导致使用file.listFiles()时内存溢出, 调整虚拟机参数也不行, 怎么解决?
...全文
2675
15
打赏
收藏
file.listFiles()内存溢出如何解决?
想做一个根据文件名查找某个文件夹下的文件功能, 由于文件夹非常庞大, 导致使用file.listFiles()时内存溢出, 调整虚拟机参数也不行, 怎么解决?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
x-teamer团队
2009-08-24
打赏
举报
回复
1
[Quote=引用 11 楼 mdjzjt 的回复:]
感谢大家, 搞定了, 找到了一个笨蛋方法, 效率上还行 哈哈 谢谢 结贴了
[/Quote]
分享一下吧~
u010630577
2021-07-02
举报
回复
@x-teamer团队
怎么解决的?分享一下呗!
diggywang
2009-08-24
打赏
举报
回复
里面肯定有大的zip之类的压缩文件
wenzheng38
2009-08-24
打赏
举报
回复
可以了解下windows里面自带的搜索功能,它是基于B+数搜索的。。。
mdjz
2009-08-24
打赏
举报
回复
感谢大家, 搞定了, 找到了一个笨蛋方法, 效率上还行 哈哈 谢谢 结贴了
APOLLO_TS
2009-08-24
打赏
举报
回复
java调用系统命令操作返回值即可查看!!
window
cd 需要查看的目录
dir 匹配串 /s/p
Linux
find 路径 模式
skyzxl
2009-08-24
打赏
举报
回复
[Quote=引用 6 楼 sixme 的回复:]
1.直接使用你需要查找的文件
2.如果存在则可以正常使用
3.如果不存在则会抛出“FileNotFound”异常,捕获即可
[/Quote]
问题可能是这样。
bigbug9002
2009-08-24
打赏
举报
回复
还有就是用 File[] listFiles(FilenameFilter filter) 用过滤器把需要的文件和目录保存下来,不需要的就不用保存了。
bigbug9002
2009-08-24
打赏
举报
回复
把递归算法,改为非递归算法。试试看
lookhang
2009-08-24
打赏
举报
回复
1.直接使用你需要查找的文件
2.如果存在则可以正常使用
3.如果不存在则会抛出“FileNotFound”异常,捕获即可
monkeyking1987
2009-08-24
打赏
举报
回复
当然会喽。如果一个文件夹下有上千个文件,调用file.listFiles()方法是很容易就把内存给占满了。此时可以判断一下file.listFiles()获得的文件数量,而在程序中只保留文件名,在需要时再调用相应的方法将文件内容给读出来就可以了。不要把所有文件的内容全加载进去。
closewbq
2009-08-24
打赏
举报
回复
这个网站介绍了相关东西,你可以去看下
http://study.feloo.com/news.php?id=197594
closewbq
2009-08-24
打赏
举报
回复
你是不是递归调用?如果是的话,就是在递归过程中不断的分配资源,而当只有最深层的目录完成后,才能释放这些资源,就有可能溢出。
lookhang
2009-08-24
打赏
举报
回复
我可能也会遇到这个问题~~~先做个记号~
knightzhuwei
2009-08-24
打赏
举报
回复
简单的文件夹行不?你把代码列出来看看。。
内存溢出
异常
解决
方案总结
这几天刚好碰到一个java
内存溢出
的问题。一直尝试着
解决
这个问题目前想到了三个方法:一 调整 虚拟机参数二 立即 释放无用的对象三 利用序列化和反序列化技术
下面是具体的代码实现
package com.free;
import java.io.
File
;
import java.io.
File
InputStream;
import java.io.
File
NotFoundException;
import
Java_
File
递归: 直接递归和间接递归 递归一定要有条件限定,能够保证停下来,否则会发生栈
内存溢出
递归的次数不能太多,否则也会发生栈
内存溢出
构造方法禁止递归,编译报错,构造方法是创建对象时使用,一直递归,导致内存中对象太多,所以直接报错 当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归 ============= public class DiGui { public st...
内存溢出
异常
解决
方案
一 调整 虚拟机参数二 立即 释放无用的对象 三 利用序列化和反序列化技术 下面是具体的代码实现package com.free;import java.io.
File
;import java.io.
File
InputStream;import java.io.
File
NotFoundException;import java.io.
File
OutputStream;import jav
Java 通过
File
类的
list
File
s
()遍历文件夹
首先我们看下
File
类的
list
File
s
()的源码: public
File
[]
list
File
s
() { String[] ss =
list
(); //用ss存放子文件名 if (ss == null) return null; //若为空则返回null int n = ss.length;
File
[] fs = ...
递归,IO字符流笔记
1. 递归 在方法内部调用方法本身的编程技巧。 注意事项: A: 递归一定要有出口,否则就是死递归 B: 递归次数不要过多,否则
内存溢出
。 递归删除和遍历时的一个注意事项:
File
[]
file
s
=
file
.
list
File
s
(); -- 下面使用
file
s
对象时,有可能出空指针异常 解释:盘下有隐藏的系统文件,只能获取到文件名,但是没有操作权限。 加上一个判断 if(
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章