Google App引擎 - 创建新目录

时间:2011-12-25 13:05:11

标签: google-app-engine mkdir

我创建了我的简单应用程序。

当我列出“。”中的所有文件和目录时。 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()));
        }
    }
}

1 个答案:

答案 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)