2011-12-25 25 views
0

私は簡単なアプリケーションを作成しました。Google App Engine - 新しいディレクトリの作成

「。」のすべてのファイルとディレクトリを一覧表示すると、私はそれをdir 'web'からすべて手に入れました。私の目標は、 'myfile'という新しいディレクトリを 'web'に作成することです。残念ながら、次のコードを実行しているページのリンクをクリックすると例外がスローされます...

「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読む:

は、App Engineは 複数のWebサーバー間でのアプリケーションのための要求を分散することができるようにするには、別で を妨害する1つのアプリケーションを防ぐために、制限された「サンドボックス」 環境でアプリケーションを実行します。この環境では、アプリケーションでコードを実行し、 App Engineデータストアにデータを格納およびクエリし、App Engine メール、URLフェッチ、およびユーザーサービスを使用して、ユーザーのWebリクエスト を調べてレスポンスを準備します。

App Engineアプリケーションでは、次のことはできません。

ファイルシステムへの書き込み。アプリケーションは永続データを格納するためにApp Engineデータストアを使用する必要があります。ファイルシステムからの読み取りは であり、アプリケーションと共にアップロードされるすべてのアプリケーションファイルは です。

[...]

あなたの唯一のオプションは、データストアを使用することです(とブロブストア)