我的日食中有以下项目结构。
我在servlet中的代码如下所示。
File entityFile = new File(getServletContext().getContextPath() + "/EntityList/entities.txt");
FileWriter fout = new FileWriter(entityFile);
fout.write("The Content");
fout.close();
这里基本上我试图写入/EntityList/entities.txt
处可用的文件,但是当我运行此文件时,我得到如下例外。
SEVERE:Servlet的Servlet.service() [com.luis.servlets.WriteEntityToAFile]在带有路径的上下文中 [/ LUISWebUI]抛出异常java.io.FileNotFoundException: \ LUISWebUI \ EntityList \ entities.txt(系统无法找到路径 指定)
我知道我的路径出了问题,有人可以把我放在正确的方向。
更新
为混乱道歉。
我将一些数据从jsp发送到servlet以写入entities.txt
文件。我能够在servlet中捕获它(通过执行sysout交叉检查它)。
答案 0 :(得分:1)
首先,我认为您有拼写错误问题,请尝试使用/EntitiesList/entities.txt
代替/EntityList/entities.txt
。
另外,移动/EntitiesList/entities.txt
下的/WEB-INF/
,以便servlet
班级可以访问它。
您可以阅读更详细的解释in this SO answer。
修改强>
关于写入文件:您的应用程序将打包在WAR
文件中,因此您将无法写入该文件,只能从中读取(有关此here的更多信息)。
但您可以使用这种方式直接在WAR外创建文件并使用此位置编写内容(在此之前,请确保您拥有适当的权限):
File entityFile = new File(getServletContext().getContextPath() + "entities.txt");
FileWriter fOut = new FileWriter(entityFile);
fOut.write("The Content");
fOut.close();
或者如果您还想要该目录,则必须执行一些额外的步骤,先创建它,然后在其中指定要写入的文件名:
File entityFolder = new File(getServletContext().getContextPath() + "EntitiesList");
entityFolder.mkdir();
File entityFile = new File(entityFolder, "entities.txt");
FileWriter fOut = new FileWriter(entityFile);
fOut.write("The Content");
fOut.close();
答案 1 :(得分:0)
代码示例:
InputStream input = getServletContext().
getResourceAsStream("/WEB-INF/EntityList/entities.txt");
Files.copy(InputStream input , Path target)
//Or Files.copy(Path source, OutputStream out)
使用FileInputStream似乎更容易,但最好使用ResourceStream
在这里阅读https://stackoverflow.com/a/2161583/8307755
https://stackoverflow.com/a/2308224/8307755