Java 通过命令行输入一个文件
您好,我有一个较大程序中的这一小部分代码,它允许我使用args通过命令行输入txt文件,但它只允许输入两个txt文件,我如何使它允许一个或两个txt文件。如果您希望命令lin提供一个或两个文件,这意味着您要提供一个或两个参数。因此args.length将等于1或2。只要做一个与此对应的ifJava 通过命令行输入一个文件,java,input,args,Java,Input,Args,您好,我有一个较大程序中的这一小部分代码,它允许我使用args通过命令行输入txt文件,但它只允许输入两个txt文件,我如何使它允许一个或两个txt文件。如果您希望命令lin提供一个或两个文件,这意味着您要提供一个或两个参数。因此args.length将等于1或2。只要做一个与此对应的if public class TFIDF { public static void main (String args[]) { if (args.length < 2) {
public class TFIDF {
public static void main (String args[]) {
if (args.length < 2) {
System.out.println("Use Two Files!");
}
}
这不是一个代码问题,而是一个逻辑问题 您的意思是一个或两个文件可以,但其他任何文件都不行,因此请使用以下不等式:
if(args.length > 0 && args.length <= 2) {
//Number of arguments correct
} else {
//number of argument wrong
}
除了检查参数是否存在外,您可能还应该检查输入的路径,并检查文件是否存在,以及它们是否实际上是文件而不是目录。args表示命令行中字符串数组中的每个参数,因此,正如java Main blaBla.txt test.csv中提到的,您在程序中获得了以下内容:
args[0]blaBla.txt第一个参数
args[1]=test.csv第二个参数
因此,您可以轻松地进行检查,以便进行解释:
if (args.length > 2) {
System.out.println("Use One or Two Files!");
System.exit(1);
}
// getting the arguments
String pathToFile1 = null;
if(args.length >= 1)
pathToFile1 = args[0];
String pathToFile2 = null;
if(args.length >= 2)
pathToFile2 = args[1];
// then just be aware that a path could be null
可按如下方式进行优化:
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]
}
为了避免在参数正确的情况下重复分配文件1,可以这样做,例如
if (args.length == 1) {
//got one file
} else if (args.length == 2) {
//got two files
} else {
//invalid arguments
}
问题是至少对我来说有点不清楚。args[]包含由空格分隔的所有给定命令行参数,这意味着当您调用java Main blaBla.txt test.csv之类的东西时,args[0]包含字符串blablabla.txt,args[1]包含字符串test.csv。因此,您可以通过简单地检查args的长度来检查是否有足够的参数,您在示例中已经做了这些工作。你到底想知道什么?你能说得更具体一点吗?听起来你好像在问如何将args.length<2更改为其他条件。是吗?@khelwood是的,这就是我想要的,这个条件只允许通过命令行使用两个txt文件,所以我希望它允许一个或两个文本文件,希望这更清楚:我试过了,但没有用,我从线程main java.lang.ArrayIndexOutOfBoundsException:1的TFIDF.mainTFIDF.java:21中的cmd异常中收到此错误,这仍然是2个文件的唯一单词。出于测试目的,我假定这些文件存在,因此它更容易运行。请使用您正在运行的命令更新问题,并添加更多代码,包括发生异常的TFIDF的第21行。@PeterToole如果参数不正确,请确保在写入错误消息后退出程序。不要访问args[1]当args.length仅为1时。指数从0开始。
if (args.length > 2 || args.length == 0) {
//none or more arguments then supported, some fail
System.out.println("Use One or Two Files!");
System.exit(1);
}
if (args.length == 1) {
//got one file or two files
//assign first
}
if (args.length == 2) {
//got two files
//also got second
}