以下是打印所有文件的程序。来自给定路径的文件夹。
import java.io.File;
public class ListDirectoryRecursive{
public static void listRecursive(File dir){
if(dir.isDirectory()){
File[] items = dir.listFiles();
for(File item : items){
System.out.println(item.getAbsoluteFile());
if(item.isDirectory()){
listRecursive(item);
}
}
}
}
public static void main(String[] args){
/* Unix path is: /usr/home/david/workspace/JavaCode */
File dir = new File("C:\\Users\\david\\workspace\\JavaCode");
listRecursive(dir);
}
}
如何让这个java程序在Unix上运行?使该程序可移植的标准方法是什么?
编辑:我想,我们知道在任何操作系统上,用户主目录都是环境设置的一部分,其中的值在Windows中为“c:\ users \ david”,在Unix中为“/ user / home / david”。
答案 0 :(得分:1)
通过args
:
File dir = new File(args[1]);
(当然检查args.length
是否足够)。
然后你可以简单地做
java ListDirectoryRecursive C:\Users\david\workspace\JavaCode
Windows上的和
java ListDirectoryRecursive ~david/workspace/JavaCode
在UNIX上。这具有明显的优势,允许您使用此程序列出任何目录,而不是硬编码路径。
答案 1 :(得分:1)
使硬编码的绝对路径C:\\Users\\david\\workspace\\JavaCode
相对。
答案 2 :(得分:1)
请不要重新编码
File dir = new File("C:\\Users\\david\\workspace\\JavaCode");
使用System.getProperty("user.home");
获取/usr/home/david
或C:\Users\david\
目录
像
String path = System.getProperty("user.home") + File.separator + "workspace" + File.separator + "JavaCode";
File dir = new File(path);
感谢过度交流