Noob问题,将文件名/目录传入Java中的命令行

Cry*_*tal 6 java file-io

我正在尝试对用户是否在命令行中输入(1)文件名或(2)目录名进行一些处理.其他任何东西都应该抛出错误.从最简单的情况开始,我写道:

import java.io.*;
import java.util.*;

public class RemoveDuplicates {

    public static void main(String[] args) {
        if (args.length != 1) {
            System.out.println("Program accepts one command-line argument.  Exiting!");
            System.exit(1);
        }
        File f = new File(args[0]);
        if (f.isDirectory()) {
            System.out.println("is directory");
        }
        else if (f.isFile()) {
            System.out.println("is file");
        }
        else {
            System.out.println("Shouldn't happen");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在命令行中,我输入:java RemoveDuplicates example.txt,我得到了重复,"不应该发生." 我也试过java RemoveDuplicates"example.txt",但这也不起作用.所以我想知道我的代码是否错误,或者我如何将它传递到命令行对于初学者来说是错误的.

其次,如何传入目录名称?就像你的目录是myDirectory一样,是不是同样的事情:java RemoveDuplicates myDirectory

第三,为什么如果我将我的文件f =新文件(args [0])放入try块并有一个catch块,我得到一个编译错误,我的try块中的内容永远不会引发异常.我以为File抛出异常?提前致谢!

use*_*509 3

  1. 您确定 example.txt 存在于您的工作目录中吗?尝试添加以下内容,看看会发生什么。

    File f = new File(args[0]);
    if (!f.exists()) {
      System.out.println("does not exist");
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 你有这个权利。

  3. 事实上,我没有得到这个错误。你是如何进行尝试/捕获的?