Java Servlet - 将数据写入文件

时间:2011-03-16 15:01:35

标签: 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 = 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而且它不能仅在我的PC上工作,所以我不能使用绝对路径。 有没有人知道如何使用类似的方式将数据写入文件?

1 个答案:

答案 0 :(得分:0)

如果资源URL可解析为绝对本地磁盘文件系统路径并且它是可写的,那么您可以使用

URL url = this.getClass().getResource(userFilePath);
File file = new File(url.toURI().getPath());
OutputStream output = new FileOutputStream(file);
// ...

然而,这不能保证适用于所有环境。

最好的办法是拥有一个固定的绝对本地磁盘文件系统路径。但是,通常的做法是将结构化数据(用户名/密码)存储在数据库中而不是文件中。