各位师兄:
如何遍历一个UNIX上的目录,比如我传入一个参数(是相对路径如:\temp\command),然后我想遍历这个目录(包含它的了目录),将文件名为:test###cmd.sh(即以test开头,cmd.sh结尾)的所有文件找到,每找出一个文件,就执行一个文件(因为sh文件就是UNIX上的批处理文件)。怎么写,谢谢指教。
如何遍历一个UNIX上的目录,比如我传入一个参数(是相对路径如:\temp\command),然后我想遍历这个目录(包含它的了目录),将文件名为:test###cmd.sh(即以test开头,cmd.sh结尾)的所有文件找到,每找出一个文件,就执行一个文件(因为sh文件就是UNIX上的批处理文件)。怎么写,谢谢指教。
解决方案 »
- BorderLayout
- Java高手请进 传值与传地址 非诚勿扰……
- 如何在 javascript 中通过正则表达式来验证用户的输入
- servlet 读取web.xml中<init-param>问题??
- 请看到这个问题,及时回复,谢谢!!!
- 一个用java对文本操作的问题
- java虚拟机负载问题
- 一个小问题需要澄清
- 请教:不是高手不用来
- 我刚学Java,用Javac编译一个例程没问题,但一用Java运行就出错:Exception in the thread "main" java.lang.NoClassDefFoundError: Welcome(rolt1)[Java]
- 请问getbyte(colmnname)如何使用,我不知道数据库中的字段的类型,如何读取其值??
- 在JComboBox怎么来处理键盘的ENTER呢?
import java.io.IOException;public class PassS { public static void main(String[] args) throws IOException {
PassS p = new PassS();
p.del("\\user\\123\\1");
} public void del(String filepath) throws IOException {
File f = new File(filepath);// 定义文件路径
if (f.exists() && f.isDirectory()) {// 判断是文件还是目录
if (f.listFiles().length == 0) {// 若目录下没有文件则直接删除
f.delete();
} else {// 若有则把文件放进数组,并判断是否有下级目录
File delFile[] = f.listFiles();
int i = f.listFiles().length;
for (int j = 0; j < i; j++) {
if (delFile[j].isDirectory()) { del(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径
}
delFile[j].delete();// 删除文件
}
}
del(filepath);// 递归调用
} }}
Process pro = run.exec(""); // 这里写上脚本命令吧!
直接写一个C SHELL,根据参数,遍历子目录,然后执行SHELL即可~
这样写比较简单,一方面,各个SHELL的运行可能需要设置环境变量,用JAVA的话可能会稍显麻烦。
其次,直接用C SHELL写,维护,修改也方便一些
public class TMain { public static void main(String[] args) { File runSh;
runSh=new File("/tmp/test.sh");
if(runSh.exists()){
System.out.println("test.sh is ok"); try {
Runtime run = Runtime.getRuntime();
Process pro = run.exec("/tmp/test.sh"); System.out.println("run test.sh is over");
} catch (Exception e) {
e.printStackTrace();
} }else{
System.out.println("test.sh is fail!");
}
}
}
在WINDOWS下运行是正常的,为什么在UNIX下运行就跳出以下错误Exception in thread "main" java.lang.UnsupportedClassVersionError: temiptest/TMa
in (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
import java.io.IOException;public class PassS { public static void main(String[] args) throws IOException {
PassS p = new PassS();
p.del("\\user\\123\\1");
} public void del(String filepath) throws IOException {
File f = new File(filepath);// 定义文件路径
if (f.exists() && f.isDirectory()) {// 判断是文件还是目录
if (f.listFiles().length == 0) {// 若目录下没有文件则直接删除
f.delete();
} else {// 若有则把文件放进数组,并判断是否有下级目录
File delFile[] = f.listFiles();
int i = f.listFiles().length;
for (int j = 0; j < i; j++) {
if (delFile[j].isDirectory()) { del(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径
}
delFile[j].delete();// 删除文件
}
}
del(filepath);// 递归调用
} }}
比如,你用 5.0 编译的,却要在1.4下运行。