Java 如何在servlet中打开文件?
我试图打开一个文件,但当前CWD错误。我试图从Java 如何在servlet中打开文件?,java,servlets,path,Java,Servlets,Path,我试图打开一个文件,但当前CWD错误。我试图从/ROOT/app/WEB-INF/classes/pl/jcubic/Service.class打开类文件 但当前工作目录使用: File root = new File("."); root.getAbsolutePath(); 返回/var/lib/tomcat7/路径,如何从servlet获取应用程序目录(即使我更改了名称或在Windows机器上运行,我也希望我的代码正常工作)。除非您的ear被分解,否则您无法通过文件API
/ROOT/app/WEB-INF/classes/pl/jcubic/Service.class打开类文件
但当前工作目录使用:
File root = new File(".");
root.getAbsolutePath();
返回/var/lib/tomcat7/
路径,如何从servlet获取应用程序
目录(即使我更改了名称或在Windows机器上运行,我也希望我的代码正常工作)。除非您的ear被分解,否则您无法通过文件API获取其内容。如上所述,您应该使用getResource。如果您希望处理分解的web存档中的文件,则需要获取当前目录。使用ServletContext.getRealPath(),例如:
String path = getServletContext().getRealPath("/")+"/";
File config = new File(path + "WEB-INF/conf/tag_checker.xml");
File lists = new File(path + "WEB-INF/conf/lists.xml");
除非您的ear被分解,否则您无法通过文件API获取其内容。如上所述,您应该使用getResource。如果您希望处理分解的web存档中的文件,则需要获取当前目录。使用ServletContext.getRealPath(),例如:
String path = getServletContext().getRealPath("/")+"/";
File config = new File(path + "WEB-INF/conf/tag_checker.xml");
File lists = new File(path + "WEB-INF/conf/lists.xml");
你可以看
InputStream input = getServletContext().getResourceAsStream("/abc.txt");
或
你可以看
InputStream input = getServletContext().getResourceAsStream("/abc.txt");
或
文件=新文件(“文件路径”)
processexec=Runtime.getRuntime().exec(“rundll32”+“”+”url.dll,FileProtocolHandler”+“”+file.getAbsolutePath()) File File=新文件(“文件路径”)
processexec=Runtime.getRuntime().exec(“rundll32”+“”+”url.dll,FileProtocolHandler”+“”+file.getAbsolutePath()) 是否要从web应用程序中读取web应用程序中存在的文件?是否尝试打开servlet中包含的文件?如果是,不要使用文件
API;根本不需要容器解压缩servlet。改为使用getResource
方法。@Makky是的,但我没有在webapps
目录中使用WAR file only符号链接到我的应用程序。我重新编译一个文件(使用我自己的类加载器加载),而不需要进行部署。当我使用绝对路径时,它可以工作。@chrylis如何使用getResource打开一个文件(我需要将其读取为二进制文件)?此外,我可能想打开一个在运行应用程序时不存在的文件。一旦部署了该文件,您就无法在web应用程序内创建该文件。您可以读取war中的文件您想从web应用程序中读取web应用程序中存在的文件吗?是否尝试打开servlet中包含的文件?如果是,不要使用文件
API;根本不需要容器解压缩servlet。改为使用getResource
方法。@Makky是的,但我没有在webapps
目录中使用WAR file only符号链接到我的应用程序。我重新编译一个文件(使用我自己的类加载器加载),而不需要进行部署。当我使用绝对路径时,它可以工作。@chrylis如何使用getResource打开一个文件(我需要将其读取为二进制文件)?此外,我可能想打开一个在运行应用程序时不存在的文件。一旦部署了该文件,您就无法在web应用程序内创建该文件。你可以阅读战争中的文件这是一个评论而不是答案。如果您将此作为答案发布,请提供一些示例。好的,这项工作this.getServletConfig().getServletContext().getRealPath(“.”)在查看javadoc时发现了此内容。这是一条注释而不是答案。如果您将此作为答案发布,请提供一些示例。好的,这项工作this.getServletConfig().getServletContext().getRealPath(“.”)在查看javadoc时发现了此问题。将您的问题标记为解决方案,因为您提供了代码。似乎我不需要调用getServletConfig
方法。将您的方法标记为解决方案,因为您提供了代码。似乎我不需要调用getServletConfig
方法。