2013-04-24 64 views
1

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

如何使Web应用程序使用本地版本的文件,因为我在编译为WAR文件之前尝试了此操作。

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

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

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

+0

根据文本文件的内容,您可能会考虑将其放在资源文件夹中。无论如何,尝试保持Web应用程序环境独立是一个好主意。通过这种方式,任何同事的机器或各种服务器环境都可以毫无困难地运行它 – Erich 2013-04-24 19:57:17

回答

0

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

  1. 设置网络文件系统。最受欢迎的选择是Sambaan S3 bucket mounted as a drive。这样做的好处是,所有文件都显示为“本地”,以便读取文件,因此您可以像平常一样使用FileInputStream
  2. 使用HTTP共享。在带有该文件的主机上设置一个HTTP服务器,如Apache,将该文件复制到Web共享目录,然后使用URL或HTTP客户端(如Apache HTTPComponents Client)通过其URL访问该文件。 (您也可以在FTP或其他服务中使用此方法。)

共享文件起初有点麻烦,但一旦您设置了共享文件系统或Web服务器,文件是一个辛苦。

-1

使用每个主机属性文件有助于在这种情况下。一般来说,你想要包含环境与属性文件之间的所有差异。

检出PropertyPlaceholderConfigurer用于处理切换属性文件。

你会延长该处理{ENV}占位符,并从春季与此类似

​​

在应用程序的名字,LOCAL.ini执行它有这个

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

和appname- PROD.ini将其更改为已安装的驱动器或不同的本地路径,从您的服务器的角度可访问此类内容

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

从他提问的方式来看,我不认为该文件在同一台计算机上。该方法是否可以访问远程文件? – sigpwned 2013-04-24 19:40:58

+0

如果使用这种技术在安装的驱动器上,则可以访问远程文件。如果驱动器/文件夹没有安装到服务器上,他必须像FTP那样做一些更棘手的事情,或者正如你在答案中提到的那样,HTTP /云 – Erich 2013-04-24 19:42:38