M31*_*314 12 java url uri inputstream
我在Java中有URI对象.我想将其转换为InputStream,但转换应该依赖于协议.如果我的URI是这样的话,我可以这样做http://somepath.com/mysuperfile.xsl:
return myURI.toURL().openConnection().getInputStream();
Run Code Online (Sandbox Code Playgroud)
或者这样,如果我的uri是file:///somepath/mysuperfile.xsl:
return new FileInputStream(Paths.get(myURI).toFile());
Run Code Online (Sandbox Code Playgroud)
或者甚至是另一种方式.我可以尝试手动检查它,但Java有一些很好/正确的方法来检查它,也许使用新的java.nio.*包?
vax*_*uis 20
每个URI都定义为由四部分组成,如下所示:
[scheme name] : [hierarchical part] [[ ? query ]] [[ # fragment ]]
如果您想要的是方案名称(大致转换为协议),请使用
switch ( myURI.getScheme() ) {
case "http":
return myURI.toURL().openConnection().getInputStream();
case "ftp":
// do something
case "file":
return new FileInputStream( Paths.get(myURI).toFile() );
}
Run Code Online (Sandbox Code Playgroud)
http://docs.oracle.com/javase/6/docs/api/java/net/URI.html#getScheme%28%29
或者,如果您只想生成一个InputStream 不区分方案,只需使用
return myURI.toURL().openStream();
Run Code Online (Sandbox Code Playgroud)
要么
return myURI.toURL().openConnection().getInputStream();
Run Code Online (Sandbox Code Playgroud)
(正如您已经为HTTP协议/方案所做的那样)