1

我有一种情况,我想从本地机器(假设文件目录是 C:\Users\temp\file.txt)到具有 Windows Server 2008 的远程服务器创建一个 inputStream。

我怎样才能让网络应用程序使用文件的本地版本,因为我在编译成 WAR 文件之前尝试过这个。

File f = new File("C:\Users\temp\file.txt");

当我尝试使用 InputStream 时,它崩溃了。我相信它引用了服务器的 C:\Users\temp\file.txt,它不存在。

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

4

2 回答 2

0

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

  1. 设置网络文件系统。一个流行的选择是Samba作为驱动器安装的 S3 存储桶。这样做的好处是,为了读取文件,所有文件都显示为“本地”,因此您可以使用FileInputStream普通文件。
  2. 使用 HTTP 共享。在包含文件的主机上设置一个 HTTP 服务器(如Apache),将文件复制到 Web 共享目录,并使用一个URL或一个 HTTP 客户端(如Apache HTTPComponents Client)通过其 URL 访问文件。(您也可以将此方法用于 FTP 或其他服务。)

共享文件一开始有点麻烦,但是一旦您设置了共享文件系统或 Web 服务器,共享大量文件就轻而易举了。

于 2013-04-24T19:41:17.000 回答
-1

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

查看PropertyPlaceholderConfigurer以处理切换属性文件。

您将扩展它以处理 {ENV} 占位符并从类似于此的 Spring 执行它

<bean id="propertyConfigurer" class="com.yourcompany.PerHostPropertiesConfigurer">
    <property name="filename" value="appname-{ENV}.ini" />
</bean>

在 appname-LOCAL.ini 中有这个

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

并在 appname-PROD.ini 中将其更改为已安装的驱动器或不同的本地路径,从您的服务器的角度来看可以访问这样的

text.filename=Z:\Users\temp\file.txt
于 2013-04-24T19:38:13.673 回答