在尝试读取文件之前检查文件是否有意义?
File inputFile = new File(inputFileName);
if (inputFile.exists() && inputFile.isFile() && inputFile.canRead()) {...}
也许这里缺少一些东西?如果我没记错的话,如果文件没有写权限或被隐藏,exists() 方法将返回 false。我也认为这段代码很昂贵。在从中读取数据之前验证文件的最佳方法是什么?
在尝试读取文件之前检查文件是否有意义?
File inputFile = new File(inputFileName);
if (inputFile.exists() && inputFile.isFile() && inputFile.canRead()) {...}
也许这里缺少一些东西?如果我没记错的话,如果文件没有写权限或被隐藏,exists() 方法将返回 false。我也认为这段代码很昂贵。在从中读取数据之前验证文件的最佳方法是什么?
这些方法
isFile本身会canRead检查文件的存在,因此exists不需要一个初步的。但canRead它以一种相当特定的方式运行,例如,在 Windows 下它返回true目录,所以我不会太指望它。另一件事是初步检查并不能保证
FileInputStream会在此文件上创建相同的检查。无论如何都必须进行异常处理。首先,可能有特定的访问权限。其次,可以在此期间删除文件(非常不可能,但可能)。第三,不要熄灭相同的异常。因此,可以先使用 进行初步检查的方案
isFile,在这种情况下,false您可以例如查看isDirectory它是否是带有 的目录,并指定错误消息。如果文件存在,则打开它,但处理异常。exists在这种情况下,canRead根本不要打电话。如果您不需要澄清错误消息,则立即打开文件,让一切都听从异常处理的摆布。