2011-12-25 122 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存儲區)