2013-10-31 116 views
1

我在网络路径中的wav文件,我可以能够从运行从该文件夹,我必须访问536.wav文件访问它\ 192.106.100.35 \录制的文件 ,我想like接入网络路径下的文件

代码

File file = new File("file://192.106.100.35/Recorded%20files/536.wav"); 
    FileInputStream fis; 
    byte[] buffer=null; 

fis = new FileInputStream(file); 
buffer= new byte[fis.available()]; 
fis.read(buffer); 
fis.close(); 

但给人

java.io.FileNotFoundException: file:\192.106.100.35\Recorded%20files\536.wav (The filename, directory name, or volume label syntax is incorrect) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at com.pointel.chart.PlayAudio.doGet(PlayAudio.java:39) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
    at java.lang.Thread.run(Unknown Source) 
Oct 31, 2013 5:51:02 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet PlayAudio threw exception 
java.lang.NullPointerException 
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:83) 
    at com.pointel.chart.PlayAudio.doGet(PlayAudio.java:62) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
    at java.lang.Thread.run(Unknown Source) 

任何帮助表示赞赏

回答

1

java.io.File只适用于本地硬盘。使用java.net.URL而不是对网络资源:

new URL("http://192.106.100.35/Recorded%20files/536.wav"); 

这个工作,你需要它支持HTTP协议和公开文件/Recorded%20files/536.wav

其他选项是NFS或SMB(安装在192.106.100.35服务器本地计算机上的远程文件系统;之后,您可以再次使用File)。

+0

谢谢,有没有其他的方式可以通过java代码访问windows远程共享文件夹中的文件 – user2779544

+1

您可以尝试http://jcifs.samba.org/,但最新版本是从2011年开始的。哪个操作系统? –

+0

好的,它的Windows xp – user2779544

0

短版本是你不能那样做的。

Javadoc here我猜可能这是一个Windows共享?但你如何得到它取决于服务器端。如果你真的可以挂载远程设备,例如(NFS/Samba/CIFS),那么你可以挽救这种方法。但是,如果它像一个HTTP服务器,那么你完全是在吠叫错误的树。