如何在Unix中运行此File I / O Java程序?

时间:2014-12-20 07:23:04

标签: java unix file-io

以下是打印所有文件的程序。来自给定路径的文件夹。

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”。

3 个答案:

答案 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/davidC:\Users\david\目录 像

String path = System.getProperty("user.home") + File.separator + "workspace" + File.separator + "JavaCode";
File dir = new File(path);

感谢过度交流