FileSystem是一个抽象类:获取一个抽象类有两种方式:第一种:看这个抽象类有没有提供什么方法返回他本身第二种:找子类
具体代码如下;
/** * 通过url注册的方式访问hdfs,了解,不会用到 * @throws Exception */ @Test public void getHdfsFile() throws Exception{// System.out.println("hello world."); //1.注册hdfs的url,让java代码能识别hdfs的url形式 URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); InputStream in = null; FileOutputStream out = null; //定义文件访问的url地址 String url = "hdfs://node01:8020/test/input/install.log"; //打开文件输入流 in = new URL(url).openStream(); out = new FileOutputStream(new File("D:\\installOut.txt")); IOUtils.copy(in,out); IOUtils.closeQuietly(in); IOUtils.closeQuietly(out); } /** * 通过FileSystem获取分布式文件系统的几种方式 * 方式一 */ @Test public void getFileSystem1() throws IOException { //如果configuration不做任何配置,获取到的是本地文件系统 "file:///" Configuration configuration = new Configuration(); //覆盖默认配置,得到分布式文件系统 configuration.set("fs.defaultFS","hdfs://node01:8020"); FileSystem fileSystem = FileSystem.get(configuration); System.out.println(fileSystem); } /** * 方式二 */ @Test public void getHdfs2() throws URISyntaxException, IOException { //使用2个参数 //参数1是一个URI,定义了使用hdfs://这种方式来访问,就是分布式文件系统 FileSystem fileSystem = FileSystem.get(new URI("hdfs://node01:8020"), new Configuration()); System.out.println(fileSystem); } /** * 方式三 */ @Test public void getHdfs3() throws URISyntaxException, IOException { Configuration configuration = new Configuration(); configuration.set("fs.defaultFS","hdfs://node01:8020/"); FileSystem fileSystem = FileSystem.newInstance(configuration); System.out.println(fileSystem); } /** * 方式四 */ @Test public void getHdfs4() throws URISyntaxException, IOException { FileSystem fileSystem = FileSystem.newInstance(new URI("hdfs://node01:8020"), new Configuration()); System.out.println(fileSystem); }转载于:https://www.cnblogs.com/mediocreWorld/p/10952775.html
相关资源:JAVA上百实例源码以及开源项目