我知道Google App Engine提供了免费空间,但我想知道它是仅用于在其数据库中存储数据还是允许我在服务器端创建文件和目录来存储我的数据?例如,我可以使用以下方法来保存文件吗?
public static void saveFile(String File_Path,StringBuffer Str_Buf,boolean Append)
{
FileOutputStream fos=null;
BufferedOutputStream bos=null;
try
{
fos=new FileOutputStream(File_Path,Append);
bos=new BufferedOutputStream(fos);
for (int j=0;j<Str_Buf.length();j++) bos.write(Str_Buf.charAt(j));
}
catch (Exception e) { e.printStackTrace(); }
finally
{
try
{
if (bos!=null)
{
bos.close();
bos=null;
}
if (fos!=null)
{
fos.close();
fos=null;
}
}
catch (Exception ex) { ex.printStackTrace(); }
}
}
答案 0 :(得分:27)
您可以阅读自己项目中的文件 - You cannot write to the file system
来自常见问题解答...
由于应用程序的分布式特性,App Engine不支持写入本地文件。相反,必须保留的数据应存储在分布式数据存储中。有关更多信息,请参阅运行时沙箱上的文档
写入文件系统。应用程序必须使用App Engine数据存储区来存储持久数据。允许从文件系统读取,并且随应用程序上载的所有应用程序文件都可用。
直接打开套接字或访问其他主机。应用程序可以使用App Engine URL提取服务分别向端口80和443上的其他主机发出HTTP和HTTPS请求。
生成子流程或线程。必须在几秒钟内在单个进程中处理对应用程序的Web请求。终止需要很长时间才能响应的进程以避免Web服务器过载。
进行其他类型的系统调用。
答案 1 :(得分:5)
不,不允许使用文件i / o。您可以使用blob来存储图像或文本。
答案 2 :(得分:4)
新信息。 答案是肯定的,但您必须使用其云存储进行写访问。您不能将常规文件用于您的目的。
https://developers.google.com/appengine/docs/java/googlecloudstorageclient/
它还具有Python API和RESTful API。
答案 3 :(得分:1)
我认为应该提到使用文件API is now deprecated写入blobstore,并且Google正在转向云端存储。
答案 4 :(得分:0)
Google App Engine旨在可扩展且无状态。
可伸缩意味着启动/关闭/回收(弹性)多个并行实例。因此,如果一个实例将数据写入本地SQLite数据库,则其他并行实例将看不到或不知道该数据。这将导致不一致,因此您根本无法获得此类服务。
因此,您必须通过网络将应用程序引擎外部的数据(状态)写入持久存储(firebase或cloud sql或cloud storage或redis)。
如果要方便“一站式全部”计算和本地存储,则必须使用块存储来旋转VM。
答案 5 :(得分:0)