验证文件的明确方法

时间:2019-01-01 14:42:41

标签: java file

我必须验证从用户输入接收的文件的路径。我的问题是我必须使用太多的“ 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;
}

有什么建议吗?

3 个答案:

答案 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)

我认为您的方法非常适合您想要实现的目标。

尝试使用布尔运算符(||和&&)使其更紧凑,但我认为可读性下降远比冗长差。

在我看来,对于这种问题,责任的束缚是完全过分的。