我想从我在Amazon Elastic块存储上创建的其中一个EBS卷下载文件。大多数情况下建议使用ServletContext#getResource()
及其对应的ServletContext#getResourceAsStream()
以及here。
但在这种情况下,以下代码是可取的
InputStream in = new FileInputStream(new File(FOLDER_PATH_ON_AMAZON_EBS + "/" + folder + "/" + fileName));
答案 0 :(得分:0)
在属性文件中使用文件路径,并使用绝对路径更好是由于以下原因,
如果文件(资源)经常被应用程序和应用程序使用,那么它还取决于用例,那么你可以在类路径中使用它并将其与存档一起打包。
答案 1 :(得分:0)
这里的问题很难说清楚。
如果您询问使用getServletContext()或新文件(PATH_TO_EBS ...)是否更好,那么它只取决于您正在运行的内容。如果您正在运行独立的Java应用程序并通过套接字请求文件,那么您将使用后者(FileInputStream覆盖您知道在哪里查看的文件)。如果您正在运行Web服务器(例如Tomcat)并将使用Web客户端下载该文件,那么您通常会使用getServletContext(),因为它是Web服务器基础结构的一部分。
两种方式都可以让你获得文件的句柄,但是getServletContext()将在Tomcat的工作区域内引用你的应用程序的位置。您是否打算将您的EBS卷安装在从Tomcat工作区域可以轻松到达的地方。
如果您正在运行Web服务器并允许您使用新的FileInputStream(新文件(MY_EBS_LOCATION +“/”+ ...))直接在EBS卷中访问文件,那么请务必使用它 - 清除而且容易。