java参数和选项,如何处理它们
我正在创建一个程序,它需要访问目录中的文件。例如,我希望用户能够传递任意多的参数(即目录)java参数和选项,如何处理它们,java,parameters,Java,Parameters,我正在创建一个程序,它需要访问目录中的文件。例如,我希望用户能够传递任意多的参数(即目录) myFile.jar dir1/subDir dir2 file.txt 我想有能力允许用户进入子目录以及,但只有他们想要的目录。因此,对于使用dir2的子目录而不是dir1/subDir,我的想法如下: myFile.jar dir1.subDir dir2-s file.txt 其中-s表示只进入该目录的子目录。 我如何实现这一点?开始在args数组中查找“-s”字符串,并在可用的地方使用它?这是正确
myFile.jar dir1/subDir dir2 file.txt
我想有能力允许用户进入子目录以及,但只有他们想要的目录。因此,对于使用dir2的子目录而不是dir1/subDir,我的想法如下:
myFile.jar dir1.subDir dir2-s file.txt
其中-s表示只进入该目录的子目录。
我如何实现这一点?开始在args数组中查找“-s”字符串,并在可用的地方使用它?这是正确的做法吗
编辑/更新:
我正在编辑这篇旧文章,只是为了确保我所做的是正确的。它完成了任务,我只是不确定它是否接近专业编程水平
这是我处理传递参数的主要方法
public static void main(String [ ] args){
boolean subfolder=false;
if (args.length<1){
System.out.println("at least one file must be provided");
System.out.println("Usage:\n [option] {folders} [option] {folders} {files}");
System.out.println("Options\n\t -s will visit all subfolders under the folder(s) provided until a -n is found");
System.out.println("\t -n (default)will Not visit subfolders for the folder(s) provided until a -s is found");
}
else
for (int i=0;i<args.length;i++){
if((args[i].length()==2)&&(args[i].contains("-"))){
// this is an options args
if(args[i].contains("s")){
subfolder=true;
}else
subfolder=false;
}
else{
if(new File(args[i]).isFile()){
// this is a file
//do what i need to do with this file
}
else if(new File(args[i]).isDirectory()){
// this is a directory get the files in that directory and if subfolders=true, then get the files inside the subfolders
getSubDirs(new File(args[i]),subfolder);
}
else
{
System.out.println("at least one file must be provided");
System.out.println("Usage:\n [option] {folders} [option] {folders} {files}");
System.out.println("Options\n\t -s will visit all subfolders under the folder(s) provided until a -n is found"); System.out.println("\t -n (default)will Not visit subfolders for the folder(s) provided until a -s is found");
}
}//else
}//for
}//method
在使用这个的时候
-s /home/ilias/Programming/Tomcat /home/ilias/EclipseWorkspace/test -n /home/ilias/Programming/Eclipse/eclipse /home/ilias/EclipseWorkspace/Servers
我在Tomcat
和test
下获得所有子文件夹中所有文件的列表
并且只有
Eclipse/Eclipse
和Servers
下的文件没有子文件夹。在main中的第二个示例字符串[]args中,通过拆分空格字符的输入来填充
public static void main(String[] args){
args[0] // myFile.jar
args[1] // dir1.subDir
args[2] // dir2
args[3] // -s
args[4] // file.txt
}
您必须自己构建功能。我建议您的第一个参数是switches(前缀为-like-s),然后您可以接受一组字符串。您可以将它们传递到函数中,以检查它们是否为文件
File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { /* do something */ }
第二段
在此,您需要确定文件是否为目录。如果是目录上的call list(),则获取其子文件/目录并重复此过程。我不是问如何实现程序来读取文件和目录,如果我不清楚,请原谅。我想知道在这种情况下调用程序是否是一种好的策略,方法是读取前缀并确定它是否需要subdir爬行not@SkarosIlias是的,这很好,很多程序都是这样工作的。
File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { /* do something */ }