关于用Java实现删除指定目录下的所有文件的问题
悬赏:25 发布时间:2010-04-22 提问人:jimiyiyi (初级程序员)
< > 猎头职位: 上海: 上海,北京:招聘java开发工程师
问题描述: 我现在用Java实现了一个删除指定目录下所有文件的程序,算法是用递归来实现的。但是文件数量超过8000个的时候就会出现StackOverflowError。
不知道是否有达人做过类似的东西或遇到过这样的问题,能否解决这个问题?望指教。
回答
建议不要单纯的运用递归。
超过一定层数就会 stackOverFlow了。
观察下win7下面删除一个文件夹,刚开始的时候是在计算要删除的文件夹的总共文件数。
计算出来之后再开始删除。
你也可以按照类似的思路,先便利文件的数量,
然后分多个线程去分别删除不同的目录。
这样各个递归的层数都能再控制之中,就避免stackOverFlow了~~~
yznxing (初级程序员) 2010-04-22
要考虑java io怎样删除一个文件
必然是把文件都读取到内存中吧
8000个文件都读到内存中然后进行删除,结果还没到删除那步就先内存不足了
也得考虑递归方式,是深度递归还是广度递归
无论何种递归都要先删除一部分已经找到文件(释放内存)然后再继续递归
liaofeng_xiao (初级程序员) 2010-04-22
这个很容易,我以前也是递归删除的。后面在网上找资料和通过别人帮助,发现一种很简单的方法。不说了,直接贴出代码:
Java代码
/**
* 通过命令删除文件或文件夹(会删除文件夹里所有文件) 只能在windows上使用,如果
* 在Unix或linux上,则修改相应命令
*
* @param _file
*/
public static void deleteFileByWindowsCommand(File _file) {
Runtime rt = Runtime.getRuntime();
String cmd = null;
try {
if(_file.isFile()) {
cmd = "cmd.exe /c del /q/a/f/s "+_file.getAbsolutePath();
} else {
cmd = "cmd.exe /c rd /s/q "+_file.getAbsolutePath();
}
rt.exec(cmd);
}catch(IOException e){
e.printStackTrace();
}
}
/**
* 通过命令删除文件或文件夹(会删除文件夹里所有文件) 只能在windows上使用,如果
* 在Unix或linux上,则修改相应命令
*
* @param _file
*/
public static void deleteFileByWindowsCommand(File _file) {
Runtime rt = Runtime.getRuntime();
String cmd = null;
try {
if(_file.isFile()) {
cmd = "cmd.exe /c del /q/a/f/s "+_file.getAbsolutePath();
} else {
cmd = "cmd.exe /c rd /s/q "+_file.getAbsolutePath();
}
rt.exec(cmd);
}catch(IOException e){
e.printStackTrace();
}
}XTU_xiaoxin (初级程序员) 2010-04-23
你把文件全部列出来,然后for循环
askyuan (初级程序员) 2010-04-23
可以分一部分删了,然后再删吖..
分享到:
相关推荐
- **版权政策**: 拒绝任何形式的商业转载、摘录和引用。但允许非商业性质(如教育用途)的自由传播,前提是不得修改原文内容。 - **风险提示**: 文档中可能包含未公开、未文档化或不符合规范的接口和技术细节。因此...
这是一份水晶风格的PPT问答文本框素材,适合用于幻灯片中表达问题与解释的场景,需要的朋友可以下载,.PPTX格式; 这是一份水晶风格的PPT问答文本框素材,适合用于幻灯片中表达问题与解释的场景,需要的朋友可以下载...
社区提供了各种丰富的教程、资讯、文章、问答、招聘、活动、项目等供大家一起交流和成长。 通过本课程,学员将会了解RPA自动化技术,了解RPA就业、发展前景以及国内外RPA市场发展状况。学员通过学习本课程,逐渐...
本系列为本站特别为本站用户聚合,如需转载,请注明作者及原文出处 问题:网络请求,iOS正常,android上报下面的错误 网络请求,iOS正常,android上报下面的错误,貌似是https的问题,但是就android上不能反悔...
在百度知道、天涯问答、奇虎问答、搜搜问问等平台上,主动回答问题或提出问题,并在内容中合理地添加网站链接。要注意的是,现在的问答平台对广告性质的链接审核较为严格,所以链接的插入要自然,避免过于明显的推销...
uniapp开发仿哔哩哔哩/短视频系统 多端点播系统、录播、可以发布多级选集视频问答、题库、资讯、营销推广、等功能 ...说明:时间紧未测,无教程,没点技术的别下载,问啥站长也回答不上,转载过来的
本期内容太多,分为两期展示问题:本系列为本站特别创造为本站会员观看,如需转载,请注明来源及原文地址 开发者工具里面,SPA页面,更改title无效 无论是ios还是安卓模拟器,都没法更改title 答: wx....
4. 问答平台外链:积极参与问答平台如百度知道、知乎等,通过解答问题自然地插入链接。维护问答链接需要定期回访,确保问题热度,增加点赞、评论,使链接保持活跃。这样不仅能提升外链的存活率,还可能带来实际的...
准备将数据json化,期待后续将数据迁移到一个基于elasticSearch的项目上方便构建自己的知识图谱,问题集锦。 并在这基础上增加python开发爬虫及机器学习等东西构成一个知识推介,问答系统。 2019.02.14 所有资料重新...
- **天涯问答、搜搜问问**:遵循类似百度问答的模式,多平台回答问题,每天保证至少2-3个自己提问或回答的问题。 3. **开水器论坛推广** - 利用论坛签名进行推广,待达到一定等级后设置包含关键词的签名。 - 在...
百度知道、搜搜问问等问答类网站拥有庞大的用户基础,通过回答问题并适当插入网站链接,能够为网站带来高质量的外链。 1. **提高账号等级**:在百度知道等平台注册账号后,积极回答问题,提高个人信誉度和等级,有...
- 百度知道和搜搜问问是常见的问答平台,其中百度知道由于审核严格,操作难度较大,但仍然是获取高质量外链的渠道。搜搜问问相对容易,可以在回答中适当插入网址以增加网站流量。此外,天涯问答、太平洋亲子网和爱...
5.1.9 Packet Tracer - Investigate STP Loop Prevention ...5.1.9为问答实验 包含问答答案 可直接上交正确答案文件 本答案版权归mewhaku所有,严禁再次转载!!! Copyright @mewhaku 2022 All Rights Reserved
授权转载付费则是在商业用途中对知识产品进行引用或转载时的付费行为。 知识付费行业的快速发展也带来了挑战,如何保证内容质量、维护创作者权益、持续吸引用户并保持用户粘性、以及在海量信息中筛选出有价值的内容...
4. **问答平台**:在百度知道、天涯问答、搜搜问问等问答平台上积极参与提问和回答,适当地在答案中嵌入你的网站链接,这既可以帮助用户,也能为你的网站引入流量。 5. **撰写软文**:编写有深度、有价值的专业文章...