Java 从本地计算机到tomcat部署的webapp的InputStream

Java 从本地计算机到tomcat部署的webapp的InputStream,java,web-applications,web,inputstream,Java,Web Applications,Web,Inputstream,我有一种情况,我想创建一个从本地机器(比如文件目录是C:\Users\temp\file.txt)到具有Windows server 2008的远程服务器的输入流 如何使web应用程序使用该文件的本地版本,因为我在编译为WAR文件之前尝试了这一点 File f = new File("C:\Users\temp\file.txt"); 当我尝试使用InputStream时,它崩溃了。我相信这是指服务器的C:\Users\temp\file.txt,它不存在 我知道这是一个“愚蠢”的问题,但任何

我有一种情况,我想创建一个从本地机器(比如文件目录是C:\Users\temp\file.txt)到具有Windows server 2008的远程服务器的输入流

如何使web应用程序使用该文件的本地版本,因为我在编译为WAR文件之前尝试了这一点

File f = new File("C:\Users\temp\file.txt");
当我尝试使用InputStream时,它崩溃了。我相信这是指服务器的C:\Users\temp\file.txt,它不存在


我知道这是一个“愚蠢”的问题,但任何建议都会非常有用。

使用每主机属性文件在这种情况下会有所帮助。通常,您希望在属性文件中包含环境之间的所有差异

签出以处理交换属性文件

您可以扩展它来处理{ENV}占位符,并从Spring执行它,类似于下面的

<bean id="propertyConfigurer" class="com.yourcompany.PerHostPropertiesConfigurer">
    <property name="filename" value="appname-{ENV}.ini" />
</bean>
在appname-PROD.ini中,将其更改为已安装的驱动器或不同的本地路径,从服务器的角度可以这样访问

text.filename=Z:\Users\temp\file.txt

如果您试图从另一台计算机访问存储在一台计算机上的文件,则必须以某种方式“共享”该文件。有两种相当简单的方法可以做到这一点:

  • 建立一个网络文件系统。一个流行的选择是或。这样做的好处是,为了读取文件,所有文件都显示为“本地”,因此您可以像正常情况一样使用
    FileInputStream
  • 使用HTTP共享。在带有该文件的主机上设置HTTP服务器,将该文件复制到web共享目录,并使用或HTTP客户端通过其URL访问该文件。(您也可以将此方法用于FTP或其他服务。)

  • 一开始共享文件有点麻烦,但一旦你建立了共享文件系统或web服务器,共享大量文件是轻而易举的事。

    从他提问的方式来看,我认为文件不在同一台机器上。这种方法会访问远程文件吗?如果远程文件位于已安装的驱动器上,您可以使用这种技术访问远程文件。如果驱动器/文件夹没有安装到服务器,他将不得不做一些比FTP更棘手的事情,或者正如您在回答中提到的,http/CuffDeXifft取决于该文本文件是什么,您可以考虑将其放入资源文件夹中。无论如何,保持web应用程序环境独立是一个好主意。这样,您同事的任何计算机或各种服务器环境都不会在运行时遇到问题
    text.filename=Z:\Users\temp\file.txt