通过命令行输入一个文件

时间:2018-04-06 13:08:45

标签: java input args

public class TFIDF {

   public static void main (String args[]) {

      if (args.length < 2)  {
         System.out.println("Use Two Files!");
      }
}

嗨,我有一小段代码来自一个更大的程序,它允许我使用args通过命令行输入txt文件,但是它只允许输入两个txt文件,我怎么做它以便它允许一个或两个txt文件。

3 个答案:

答案 0 :(得分:0)

如果希望命令lin给出一个或两个文件,则表示您提供一个或两个参数。所以args.length将等于1或2.只需做一个if对应。

if(args.length > 0 && args.length <= 2) {
    //Number of arguments correct
} else {
    //number of argument wrong
}

答案 1 :(得分:0)

这不是一个代码问题,而是一个逻辑问题。

你说一两个文件没问题,但更多的文件没有,所以请使用这个不等式:

(q: any): Promise<Array<any>> => {
return fetch('http://speedtest.net', { mode: 'no-cors' })
    .then(response => response.json())
    .then((data: any) => data)
    .catch(error => console.error(error))
    ;
};

除了检查参数是否存在之外,您应该检查输入的路径并检查文件是否存在以及它们实际上是文件而不是目录。

答案 2 :(得分:0)

docker start表示来自命令行的字符串数组中的每个参数,因此在案例args中提到的其他参数在程序中有以下内容:

  • java Main blaBla.txt test.csv(第一个参数)
  • args[0] blaBla.txt(第二个参数)

所以你可以轻松检查,以获得解释:

args[1]=test.csv

可以如下优化:

if (args.length == 0 || args.length > 2) {
 System.out.println("please provide one or two files");
} else if (args.length == 1) {
 // got only 1 file
 // file1 = args[0]
} else {
 // args.length == 2 got 2 files
 // file1 = args[0]
 // file2 = args[1]
}

为了避免冗余分配file1,如果参数正确可以做例如。此

if (args.length == 1) {
 //got one file
} else if (args.length == 2) {
 //got two files
} else {
 //invalid arguments
}