我必须验证从用户输入接收的文件的路径。我的问题是我必须使用太多的“ if”,并且我认为代码看起来有些混乱。我知道我可以通过使用“责任链”模式来鼓励这种有条件的陈述,但是对于我的问题而言,此过程似乎有些复杂。我的意思是,我真的不想为每次验证创建一个新的类。
这是我的代码:
public boolean isValidFile(String filePath) {
File file = new File(filePath);
if(!getFileExtension(file).equals("txt")) {
return false;
}
if(!file.exists()) {
return false;
}
if(!file.isFile()) {
return false;
}
if(file.isHidden()) {
return false;
}
if(!file.canExecute()) {
return false;
}
if(!file.canRead()) {
return false;
}
return true;
}
有什么建议吗?
答案 0 :(得分:2)
您可以使用布尔代数:
public boolean isValidFile(String filePath) {
File file = new File(filePath);
return
getFileExtension(file).equals("txt") &&
file.exists() &&
file.isFile() &&
!file.isHidden() &&
file.canExecute() &&
file.canRead();
}
答案 1 :(得分:2)
这可能是基于观点的,并且您的函数具有很好的可读性(我认为...),但是还有其他一些选项可供您选择:
if(!getFileExtension(file).equals("txt")) return false;
if(!file.exists()) return false;
...
或
if(!getFileExtension(file).equals("txt") ||
!file.exists() ||
...
!file.canRead()) return false;
或
return (
getFileExtension(file).equals("txt") &&
file.exists() &&
...
file.canRead());
这可能是编写有效文件要求的更直接方法。
答案 2 :(得分:0)
我认为您的方法非常适合您想要实现的目标。
尝试使用布尔运算符(||和&&)使其更紧凑,但我认为可读性下降远比冗长差。
在我看来,对于这种问题,责任的束缚是完全过分的。