这段代码很乱,很长,这就是我无法轻易修改的原因。我尝试使用while
,for
循环,等等,但我不能。你能不能帮我缩短它。非常感谢你。
String path1 = "/storage/Folder/" + file_name;
String path2 = Environment.getExternalStorageDirectory().getPath() + "/Folder/" + file_name;
String path3 = Environment.getExternalStorageDirectory().getPath() + "/Folder2/" + file_name;
File file1 = new File(path1);
File file2 = new File(path2);
File file3 = new File(path3);
if (file1.exists()) {
// do something 1
} else if (file2.exists()) {
// do something 2
} else if (file3.exists()) {
// do something 3
} else {
// do something 4
}
我正在尝试这样;
String[] path_array = {path1, path2, path3};
for (String current_str : path_array) {
File fi = new File(current_str);
if (fi.exists()) {
// do something
}
}
答案 0 :(得分:0)
如果你有流api,你可以像这样使用它:
List<File> files = new ArrayList<>();
files.add(new File("/"));
files.add(new File("/"));
files.add(new File("/"));
files.stream().filter(File::exists).forEach(f -> { /* do something */ });
否则你可以这样做:
List<File> files = new ArrayList<>();
files.add(new File("/"));
files.add(new File("/"));
files.add(new File("/"));
for (File file: files) {
if(file.exists()) {
//do something
}
}
答案 1 :(得分:0)
循环用于重复性任务。既然你做了某事&#34;对于每个文件都不同,您不需要循环。您可以使用循环进行文件构建,但是您必须创建File对象数组以供以后访问。如果你想要易于理解的代码(不是更短的代码),你可以尝试这样的东西,但同样,你的代码也没问题。
public void yourCallingMethod() {
if(!file1Exists && !file2Exists && !file3Exists) {
// do something 4
}
}
public boolean file1Exists(String file_name) {
File file = new File("/storage/Folder/" + file_name);
if (file.exists()) {
// do something 1
return true;
}
return false;
}
public boolean file2Exists(String file_name) {
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/Folder/" + file_name);
if (file.exists()) {
// do something 2
return true;
}
return false;
}
public boolean file3Exists(String file_name) {
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/Folder2/" + file_name);
if (file.exists()) {
// do something 3
return true;
}
return false;
}