黑马程序员技术交流社区
标题:
递归扫描可执行文件,并将文件执行
[打印本页]
作者:
蓝迪
时间:
2012-8-29 15:41
标题:
递归扫描可执行文件,并将文件执行
本帖最后由 蓝迪 于 2012-8-29 16:35 编辑
/*
用递归算法扫描文件夹里的.txt后缀的可执行文件
然后用Runtim方法执行它
*/
import java.io.*;
class FileText
{
public static void main(String[] args) throws Exception
{
File f = new File("g:\\xuexi\\java1\\day20");//扫描day20文件夹
method(f);
}
public static void method(File dir)throws Exception
{
File[] files = dir.listFiles();//创建数组接收返回的文件对象
for (int x=0; x<files.length ; x++)
{
if (files[x].isDirectory())//如果返回的是文件夹,则继续递归
method(files[x]);
else
if (files[x].canExecute())//如果返回的是文件,则判断文件是否可执行
{
String s = files[x].getName();//接收可执行文件的文件名
if(s.endsWith(".txt"))
{
<FONT color=red>StringBuilder sb = new StringBuilder("notepad ");</FONT><FONT color=black>//</FONT>创建一个字符串缓冲区,先把打开方式输入缓冲区中
sb.append(s);//在原缓冲区内容后边输入文件名
String s1 = sb.toString();//接收缓冲区中数据
System.out.println("s1=="+s1);
Runtime r = Runtime.getRuntime();
Process p = r.exec(s1);
}
}
}
}
}
复制代码
在看毕老师关于运用递归算法查找文件夹及文件的视频中,老师曾经说了句 " 如果查找到可执行文件,并用Runtim方法执行它们,是不是很牛啊"
然后我就自己尝试着做了这个练习
用递归的方法,查找可执行文件其实并不难
这个程序的难点就在于:
查找到的可执行文件有不同的后缀,就是代表这文件的类型不相同,当你想要运行他们的时候,他们的打开方式不相同
刚开始我以为只有获取到可执行文件的绝对路径,就可以调用 Runtim中 exec方法来运行他了,结果编译没问题,但是运行就出现错误了
后来经过反复的思考,还有询问
感谢 周兴华 同学给我的解答还有建议
我使用了 StringBuilder 这个字符缓冲区,每一次查询到可执行文件,我都先创建一个缓冲区,用于存储想要使用的文件打开方式 如: notepad (记事本形式)
然后把获取的可执行文件用 append 方法添加到缓冲区中
再创建一个String类型变量,接收缓冲区中数据, 即接收了 ( "notepad 可执行文件的绝对路径")
这样调用exec方法 就可以用记事本形式打开你所搜到的可执行文件了
希望能给大家带来点帮助,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2