hadoop抽象方法的实现

yqyhoc1h  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(350)
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class ShowFileStatus {    
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String uri = args[0];
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(URI.create(uri), conf);

        Path file = new Path(args[0]);
        FileStatus stat = fs.getFileStatus(file);
        System.out.println(stat.getLen());
    }
}
``` `getFileStatus()` 是一种抽象的方法 `FileSystem` 类和 `FileSystem` 类需要扩展以使用 `getFileStatus()` 方法。。但是在上面的代码中,我可以使用方法而不扩展 `FileSystem` 班级。怎样?我不明白这个?
eoxn13cs

eoxn13cs1#

当你获得 FileSystem 使用中提供的静态工厂方法初始化 FileSystem 班级。它在内部创建自己实现的一个示例。文件系统有许多可用的实现。

public static FileSystem get(URI uri, Configuration conf) throws IOException

返回此uri的方案和权限的文件系统。uri的方案确定一个配置属性名fs.scheme.class,其值命名文件系统类。整个uri被传递给文件系统示例的initialize方法。
现在基本上,你会打电话 getFileStatus 提供的实现之一的方法。

相关问题