public static FileInputStream openInputStream(final File file) throws IOException {
		if (file.exists()) {
			if (file.isDirectory()) {
				throw new IOException("File '" + file + "' exists but is a directory");
			}
			if (!file.canRead()) {
				throw new IOException("File '" + file + "' cannot be read");
			}
		}
		else {
			throw new FileNotFoundException("File '" + file + "' does not exist");
		}
		return new FileInputStream(file);
	}
Opens a {@link java.io.FileInputStream} for the specified file, providing better
error messages than simply calling <code>new FileInputStream(file)</code>.
<p>
At the end of the method either the stream will be successfully opened, or an
exception will have been thrown.
<p>
An exception is thrown if the file does not exist. An exception is thrown if the
file object exists but is a directory. An exception is thrown if the file exists
but cannot be read.
@param file the file to open for input, must not be {@code null}
@return a new {@link java.io.FileInputStream} for the specified file
@throws java.io.FileNotFoundException if the file does not exist
@throws IOException if the file object is a directory
@throws IOException if the file cannot be read
@since 1.3
spring-cloud-alibaba-starters/spring-cloud-alibaba-commons/src/main/java/com/alibaba/cloud/commons/io/FileUtils.java