我创建了我的简单应用程序。
当我列出“。”中的所有文件和目录时。 dir我从dir'web'得到了所有这些。我的目标是在'web'中创建一个名为'myfile'的新目录。不幸的是,当我点击页面上的链接(运行以下代码)时,它会引发异常......
你能告诉我如何在'web'中创建文件/目录吗?
我的第二个问题:
假设我的应用程序更大并且被几个人使用。我想为所有这些目录创建目录,但是将所有这些保存在我的“web”目录中是非常不舒服的。是否可以为“用户的文件”创建其他服务器或取其他位置?
谢谢!
package myapp;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.tools.ant.taskdefs.Mkdir;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
public class MyAppServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
// getting logged user
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
// anybody is logged
if (user != null) {
resp.setContentType("text/plain");
resp.getWriter().println("Hello, " + user.getNickname());
File test = new File(".");
String [] tab = test.list();
// list of files before
for (String el : tab) {
resp.setContentType("text/plain");
resp.getWriter().println("File ->, " + el);
}
File test2 = new File("./myfile");
test2.mkdir();
// list of files after
for (String el : tab) {
resp.setContentType("text/plain");
resp.getWriter().println("File ->, " + el);
}
} else {
resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
}
}
}
答案 0 :(得分:2)
GAE没有任何文件系统。阅读http://code.google.com/intl/en-US/appengine/docs/java/runtime.html#The_Sandbox:
允许App Engine分发跨应用程序的请求 多个Web服务器,并防止一个应用程序干扰 与另一个,应用程序在受限制的“沙箱”中运行 环境。在这种环境中,应用程序可以执行代码, 在App Engine数据存储区中存储和查询数据,使用App Engine 邮件,URL提取和用户服务,并检查用户的Web请求 准备回应。
App Engine应用程序不能:
写入文件系统。应用程序必须使用App Engine数据存储区来存储持久数据。从文件系统中读取是 允许,以及随应用程序上传的所有应用程序文件 可用。
[...]
您唯一的选择是使用数据存储区(和blobstore)