JavaServlet-将数据写入文件
我有一个servlet,它使用带有数据的文件。此文件的相对路径包含在web.xml中。 我有以下代码部分,从文件中读取数据:JavaServlet-将数据写入文件,java,file,servlets,Java,File,Servlets,我有一个servlet,它使用带有数据的文件。此文件的相对路径包含在web.xml中。 我有以下代码部分,从文件中读取数据: public class LoginServlet extends HttpServlet { private Map<String, UserData> users; public void init() throws ServletException { super.init(); String userFilePath = getServ
public class LoginServlet extends HttpServlet {
private Map<String, UserData> users;
public void init() throws ServletException {
super.init();
String userFilePath = getServletContext().getInitParameter("user.access.file");
InputStream userFile = this.getClass().getResourceAsStream(userFilePath);
try {
users = readUsersFile(userFile);
} catch (IOException e) {
e.printStackTrace();
throw new ServletException(e);
}
....
....
}
private Map<String, UserData> readUsersFile(InputStream is) throws IOException{
BufferedReader fileReader = new BufferedReader(new InputStreamReader(is));
Map<String, UserData> result = new HashMap<String, UserData>();
....
....
....
return result;
}
}
因为这是一个servlet,它不仅在我的电脑上工作,所以我不能使用绝对路径。
有人知道我如何使用类似的方法将数据写入文件吗?如果资源URL可解析为绝对本地磁盘文件系统路径且可写入,则可以使用
URL url = this.getClass().getResource(userFilePath);
File file = new File(url.toURI().getPath());
OutputStream output = new FileOutputStream(file);
// ...
然而,这并不能保证在所有环境下都能工作
最好的选择是拥有一个固定且绝对的本地磁盘文件系统路径。但是,通常的做法是将结构化数据用户名/密码存储在数据库中,而不是文件中。如果资源URL可解析为绝对本地磁盘文件系统路径且可写入,则可以使用
URL url = this.getClass().getResource(userFilePath);
File file = new File(url.toURI().getPath());
OutputStream output = new FileOutputStream(file);
// ...
然而,这并不能保证在所有环境下都能工作
最好的选择是拥有一个固定且绝对的本地磁盘文件系统路径。但是,通常的做法是将结构化数据用户名/密码存储在数据库中,而不是存储在文件中。问题到底是什么?您不能在web.xml中使用绝对路径,因为您想使其可配置?或者你是不是遇到了一些你不明白的异常情况?您可以将数据写入文件,但请记住,servlet运行在servlet容器进程中,该进程需要OS文件写入权限才能写入目录。请澄清您是要将文件写入服务器还是客户端主机?问题到底是什么?您不能在web.xml中使用绝对路径,因为您想使其可配置?或者你是不是遇到了一些你不明白的异常情况?您可以将数据写入文件,但请记住,servlet运行在需要OS文件写入权限才能写入目录的servlet容器进程中。请澄清您是要将文件写入服务器还是客户端主机?