从Amazon EBS读取文件

时间:2012-07-29 22:58:06

标签: java amazon-ec2 amazon-web-services amazon-ebs servlet-3.0

我想从我在Amazon Elastic块存储上创建的其中一个EBS卷下载文件。大多数情况下建议使用ServletContext#getResource()及其对应的ServletContext#getResourceAsStream()以及here

但在这种情况下,以下代码是可取的

InputStream in = new FileInputStream(new File(FOLDER_PATH_ON_AMAZON_EBS + "/" + folder + "/" + fileName));

2 个答案:

答案 0 :(得分:0)

在属性文件中使用文件路径,并使用绝对路径更好是由于以下原因,

  • 有可能ec2卷的挂载点发生变化,在类路径中进行修改并修改比修改属性文件中的条目要困难得多。
  • 通常使用getResource()来获取属性文件之类的资源,如果有其他IO存储照片,那么办公室文档则明智地使用绝对路径进行访问。

如果文件(资源)经​​常被应用程序和应用程序使用,那么它还取决于用例,那么你可以在类路径中使用它并将其与存档一起打包。

答案 1 :(得分:0)

这里的问题很难说清楚。

如果您询问使用getServletContext()或新文件(PATH_TO_EBS ...)是否更好,那么它只取决于您正在运行的内容。如果您正在运行独立的Java应用程序并通过套接字请求文件,那么您将使用后者(FileInputStream覆盖您知道在哪里查看的文件)。如果您正在运行Web服务器(例如Tomcat)并将使用Web客户端下载该文件,那么您通常会使用getServletContext(),因为它是Web服务器基础结构的一部分。

两种方式都可以让你获得文件的句柄,但是getServletContext()将在Tomcat的工作区域内引用你的应用程序的位置。您是否打算将您的EBS卷安装在从Tomcat工作区域可以轻松到达的地方。

如果您正在运行Web服务器并允许您使用新的FileInputStream(新文件(MY_EBS_LOCATION +“/”+ ...))直接在EBS卷中访问文件,那么请务必使用它 - 清除而且容易。