【问题标题】:Access a file in network path访问网络路径中的文件
【发布时间】:2013-10-31 12:38:35
【问题描述】:

我在网络路径中有一个 wav 文件,我可以从运行为 \192.106.100.35\Recorded 文件中访问它 从那个文件夹我必须访问 536.wav 文件,我试过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)

感谢任何帮助

【问题讨论】:

    标签: java file jakarta-ee filepath


    【解决方案1】:

    java.io.File 仅适用于本地硬盘。使用java.net.URL 代替网络资源:

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

    为此,您需要192.106.100.35 上的服务器,该服务器支持 HTTP 协议并将文件公开为/Recorded%20files/536.wav

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

    【讨论】:

    • 谢谢,有没有其他方法可以通过java代码访问windows远程共享文件夹中的文件
    • 使用普通工具映射网络共享。这将使远程文件在本地文件系统中可见,Java 将能够加载它。
    【解决方案2】:

    短版是你根本做不到。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 2021-04-26
      • 2019-01-31
      • 1970-01-01
      • 2017-05-11
      相关资源
      最近更新 更多