我正在创建一个程序,其中包括访问目录中的文件。例如,我希望用户能够传递尽可能多的参数(即目录)
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
在执行任何参数或错误的参数时,我得到了这个
at least one file must be provided
Usage:
[option] {folders} [option] {folders} {files}
Options
-s will visit all subfolders under the folder(s) provided until a -n is found
-n (default)will Not visit subfolders for the folder(s) provided until a -s is found
并在使用此
时-s /home/ilias/Programming/Tomcat /home/ilias/EclipseWorkspace/test -n /home/ilias/Programming/Eclipse/eclipse /home/ilias/EclipseWorkspace/Servers
我获取了Tomcat
下test
下所有子文件夹中所有文件的列表
并且只有Eclipse/eclipse
下{和Servers
下的文件没有子文件夹。
答案 0 :(得分:0)
从你的第二个例子中,通过在空格字符上分割输入来填充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
}
您必须自己构建功能。我建议你的第一个参数是开关(前缀为 - 像-s)然后你可以接受一堆字符串。您可以将它们传递给函数以检查它们是否是文件
File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { /* do something */ }
第二段代码
从这里您需要确定文件是否是目录。如果是目录上的调用list()以获取其子文件/目录并重复该过程。