URI与Path的的分析

来源:互联网 发布:免费下载农村淘宝app 编辑:程序博客网 时间:2024/05/20 11:26

看到别人的文档有句话一直不能理解于是手动在实践中总结答案

            文档是这样说的:

[plain] view plaincopy
  1.       /**  
  2. * 在某些情况设置URLStreamHandlerFactory的方式不一定会生效.  
  3. * 在这种情况下,需要用FileSystem来打开一个文件的输入流,  
  4. * 文件的位置是用Hadoop Path呈现在Hadoop中的,与java.io中的不一样  
  5. * */  
文件位置的呈现怎么就不一样呢?

代码一:

[java] view plaincopy
  1. public class URLCat {  
  2.       
  3.     static{  
  4.         URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());  
  5.     }  
  6.       
  7.     /** 
  8.      * IOUtil是个工具类,可以用来在finally从句中关闭流, 
  9.      * 也可以用来拷贝数据到输出流中. 
  10.      * copyByte方法的四个参数代表的含义分别是: 
  11.      *      拷贝的来源,去处,刀背的字节数以及在拷贝完成之后是否关闭流 
  12.      * */  
  13.     public static void main(String[] args) {  
  14.         InputStream in = null;  
  15.         try {  
  16.             in = new URL(args[0]).openStream();  
  17.             //  
  18.             IOUtils.copyBytes(in, System.out, 4096false);  
  19.         } catch (IOException e) {  
  20.             IOUtils.closeStream(in);  
  21.         }  
  22.           
  23.     }  
  24.       
  25. }  

代码二:

[java] view plaincopy
  1. public class FileSystemCat {  
  2.       
  3.       
  4.     /** 
  5.      * 在某些情况设置URLStreamHandlerFactory的方式不一定会生效. 
  6.      * 在这种情况下,需要用FileSystem来打开一个文件的输入流, 
  7.      * 文件的位置是用Hadoop Path呈现在Hadoop中的,与java.io中的不一样 
  8.      * */  
  9.     public static void main(String[] args) throws IOException {  
  10.         String uri = args[0];  
  11.         Configuration conf = new Configuration();  
  12.         FileSystem fs = FileSystem.get(URI.create(uri), conf);  
  13.         InputStream in = null;  
  14.         in = fs.open(new Path(uri));  
  15.         IOUtils.copyBytes(in, System.out, 4090true);  
  16.           
  17.     }  
  18. }  

我开始尝试给他们都输入相同的路径:    hdfs://localhost:9000/user/admin/test.txt                 //这个是给main函数设参的路径(怎么设置不用我说了吧)

结果都能运行出来.

然后我又把路径修改了下,/user/admin/test.txt   ,这个形式在URI中报错,在Path中却依旧可以运行.这样可以理解成Path自动完成了hadoop的协议.


0 0
原创粉丝点击