从命令行解析作为参数传递给 Java 的文件
Parsing a file passed as argument to Java from command line
我正在尝试遵循此 link:
Parsing arguments to a Java command line program
并使用 java 中的参数来解析一些文件。
我需要提供给应用程序的文件主要是 2 个。我们称它们为 file1 和 file2。
我希望我可以这样称呼 java:
/usr/bin/java -jar myapplication.jar -f file1
或
/usr/bin/java -jar myapplication.jar -s file2
从来没有在同一时间。
在我发布的 link 中,我不明白如何将一个参数(一个文件)传递给 void main。
我的代码在理解我需要 -f -s 格式的参数之前:
public class myApp {
public static void main(String[] args) throws IOException, JAXBException, SQLException {
Database db = new Database();
if ( args.length == 0 ) {
System.out.println("No arguments were given.\n");
db.disconnect();
}
else {
System.out.println("Got the argument.\n");
File file = new File(args[0]);
String namefile = file.getName();
switch (namefile.substring(0, 6)) {
case "FILE01":
System.out.println("Processing file type FILE01: "+namefile);
Process_filezeroone program_zeroone = new Process_filezeroone();
program_zeroone.process(file, namefile);
break;
case "FILE02":
System.out.println("Processing file type FILE02: "+namefile);
Process_filezerotwo program_zerotwo = new Process_filezerotwo();
program_zerotwo.process(file, namefile);
break;
default:
System.out.println("Skipping: "+namefile);
db.disconnect();
}
}
}
}
感谢您的帮助。
很简单。只需使用 java.io.File api 即可实现。
File f = new File(args[0]);
以及使用InputStream来操作文件。
只需对第一个参数做一个 switch case (-f
/-s
)。
File file;
switch(args[0]){
case "-f" :
file = new File(args[1]);
//do stuff with file1
break;
case "-s" :
file = new File(args[1]);
//do stuff with file2
break;
default :
}
在第一种情况下,你和
一样
myApp.main(new String[] { "-f", "file1" });
在第二种情况下
myApp.main(new String[] { "-s", "file2" });
如果您发现参数令人困惑,我建议您使用调试器查看数组或打印出参数。
您可以使用 switch
在它们之间切换或使用几个 if
/ else if
语句。
我正在尝试遵循此 link: Parsing arguments to a Java command line program
并使用 java 中的参数来解析一些文件。
我需要提供给应用程序的文件主要是 2 个。我们称它们为 file1 和 file2。
我希望我可以这样称呼 java:
/usr/bin/java -jar myapplication.jar -f file1
或
/usr/bin/java -jar myapplication.jar -s file2
从来没有在同一时间。
在我发布的 link 中,我不明白如何将一个参数(一个文件)传递给 void main。
我的代码在理解我需要 -f -s 格式的参数之前:
public class myApp {
public static void main(String[] args) throws IOException, JAXBException, SQLException {
Database db = new Database();
if ( args.length == 0 ) {
System.out.println("No arguments were given.\n");
db.disconnect();
}
else {
System.out.println("Got the argument.\n");
File file = new File(args[0]);
String namefile = file.getName();
switch (namefile.substring(0, 6)) {
case "FILE01":
System.out.println("Processing file type FILE01: "+namefile);
Process_filezeroone program_zeroone = new Process_filezeroone();
program_zeroone.process(file, namefile);
break;
case "FILE02":
System.out.println("Processing file type FILE02: "+namefile);
Process_filezerotwo program_zerotwo = new Process_filezerotwo();
program_zerotwo.process(file, namefile);
break;
default:
System.out.println("Skipping: "+namefile);
db.disconnect();
}
}
}
}
感谢您的帮助。
很简单。只需使用 java.io.File api 即可实现。
File f = new File(args[0]);
以及使用InputStream来操作文件。
只需对第一个参数做一个 switch case (-f
/-s
)。
File file;
switch(args[0]){
case "-f" :
file = new File(args[1]);
//do stuff with file1
break;
case "-s" :
file = new File(args[1]);
//do stuff with file2
break;
default :
}
在第一种情况下,你和
一样myApp.main(new String[] { "-f", "file1" });
在第二种情况下
myApp.main(new String[] { "-s", "file2" });
如果您发现参数令人困惑,我建议您使用调试器查看数组或打印出参数。
您可以使用 switch
在它们之间切换或使用几个 if
/ else if
语句。