Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java参数和选项,如何处理它们_Java_Parameters - Fatal编程技术网

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 */ }