如何知道参数是Java中的目录还是文件

时间:2013-11-20 11:17:51

标签: java file directory

我正在尝试将参数传递给方法。参数可以是文件或目录。

public class ReadCsv {

    String line =  null;
    BufferedReader br ;

    public void readCsv(String arg) throws Exception{

        File file = new File(arg);
        if(file.isDirectory()){
        for(File dir : file.listFiles()){

                System.out.println(file.getName());
                reader(dir);
            }
        }
        else{
                reader(file);

            }
        }

    public void reader(File file) throws Exception {
        br = new BufferedReader(new FileReader(file));
        while((line=br.readLine())!=null){
            //Code 
    }
}

但是代码不能正常工作。当我传递参数arg时,我必须确定它是文件还是目录并根据它工作。任何人都可以帮我如何确定文件或目录。如果arg是一个目录,我的代码运行循环4次。

4 个答案:

答案 0 :(得分:1)

您的代码看起来很好,看起来您只是输出目录(您已命名为' file')而不是您已命名为' dir'的文件。 。

for(File dir : file.listFiles()) {
   System.out.println(dir.getName()); //you were outputting file.getName()
}

答案 1 :(得分:1)

File您可以使用isDirectory()isFile()方法来检查类型。

答案 2 :(得分:1)

请参阅File官方文档。有一些方法,如:

isFile();
isDirectory();

答案 3 :(得分:1)

试试吧.. 它会打印所有目录和文件名。

如果是嵌套目录:

public class ReadCsv {

    String line =  null;
    BufferedReader br ;

    public void readCsv(String arg) throws Exception{

        File file = new File(arg);
        checkIsDir(file );
    }

    public void checkIsDir(File file) throws Exception {

       if(file.isDirectory()){

            System.out.println("Directory : "file.getName());
            for(File dir : file.listFiles()){
                  checkIsDir(dir);
            }
        }
        else{
                System.out.println("File : "file.getName());
                reader(file);    
            }
    }

    public void reader(File file) throws Exception {
        br = new BufferedReader(new FileReader(file));
        while((line=br.readLine())!=null){
            //Code 
    }
}