在linux系统中编译、执行java程序
在linux系统中,/shiji这个目录下写一个最简单的遍历“/home”目录下文件夹的小程序:
import java.io.*;
public class getfile{
public static void main(String[] args){
File file = new File("/home");
System.out.println(file.getName());
File[] files = file.listFiles();
for(int i = 0; i < files.length; i++){
System.out.println(files[i].getAbsolutePath());
}
}
}
这里,没有指明包结构,如果在代码中有的话,则要在/shiji/这个目录下,建立对应的目录结构,例:/shiji/com/bxf/linuxTest/
然后,找到java-jdk的安装目录:
我的是:/opt/jdk
进入bin目录下执行:
./javac /baoxiaofei/getfile.java
因为代码简单,一次编译成功!
然后,进入到代码对应的目录:/shiji下执行:
java getfile
得到结果如下:
home
/home/....
/home/....
/home/....
/home/....
处于公司变态的规定,不敢把目录详细列出来!
另外,代码很简单,在eclipse中,按照别人的思路,写了一个(也是很简单)递归遍历文件的代码,贴上来,免得自己忘了:
package com.baoxiaofei.FileTest;
import java.io.File;
import java.util.LinkedList;
/**
*遍历文件夹
*非递归方式
* */
public class traverseFolder {
private static final long ZERO = 0L;
static int num_file = 0;
static int num_folder = 0;
StringBuilder sb = new StringBuilder();
public void traverseWay(File dir){
File[] files = dir.listFiles();
LinkedList<File> tmp_list = new LinkedList<File>();
if(files.length == ZERO){
System.out.println("the Folder is null!");
}
for(int i = 0 ; i < files.length ; i++){
if(files[i].isDirectory()){
tmp_list.add(files[i]);
num_folder++;
}else{
sb.append(files[i].getName());
sb.append("\n\r");
System.out.println("----the file : " + files[i].getAbsolutePath() +
"'s size is :" + files[i].getTotalSpace());
num_file++;
}
}
File tmp_file;
while(!tmp_list.isEmpty()){
tmp_file = (File)tmp_list.removeFirst();
if(tmp_file.isDirectory()){
System.out.println("start to traverse :" + tmp_file);
files = tmp_file.listFiles();
for(int j = 0 ; j < files.length ; j++){
System.out.println();
}
}
}
}
public static void main(String[] args) {
/*这里就不具体写了*/
}
}