2011-12-25 75 views
0

我创建了我的简单应用程序。Google App引擎 - 创建新目录

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

回答

2

GAE没有任何文件系统。阅读http://code.google.com/intl/en-US/appengine/docs/java/runtime.html#The_Sandbox

为了让应用程序引擎为跨越 多个Web服务器应用程序分发请求,并防止一个应用程序的干扰 与另一个,在一个受限制的“沙箱” 环境中的应用程序运行。在此环境中,应用程序可以执行代码, 存储和查询App Engine数据存储区中的数据,使用App Engine 邮件,URL获取和用户服务,并检查用户的Web请求 并准备响应。

App Engine应用程序不能:

写入文件系统。应用程序必须使用App Engine数据存储来存储持久性数据。允许从文件系统读取 ,并且随应用程序上传的所有应用程序文件均为 。

[...]

你唯一的选择是使用数据存储(Blob存储区)