SAE java应用读写文件(TmpFS和Storage)-----绝世好代码

近期不少java用户都在提sae读写本地文件的问题,在这里结合TmpFS和Storage服务说说java应用应该如何读写文件
TmpFS是一个供应用临时读写的路径,但请求过后将被销毁。出于安全考虑,sae限制了应用对本地IO操作,但本地操作肯定是存在的,所以sae提供了TmpFS来应对。如果需要将文件持久化怎么办呢?当然是使用storage。

下面给出一个例子结合storage和TmpFS来写文件
首先使用common-upload将文件上传至TmpFS下,之后再使用SaeStorage对象将文件存储至storage中。
这里只是用于演示storage结合TmpFS使用,如果单纯使用storage服务大可不必这么麻烦,直接调用SaeStorage的write方法即可。


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gbk");
PrintWriter out = response.getWriter();
// 使用SaeUserInfo拿到改请求可写的路径
String realPath = SaeUserInfo.getSaeTmpPath() + "/";
try {
// 使用common-upload上传文件至这个路径中
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart)
return;
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(1024 * 1024);
List<FileItem> items = null;
items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
File fullFile = new File(item.getName());
File uploadFile = new File(realPath, fullFile.getName());
item.write(uploadFile);
// 上传完毕后 使用SaeStorage往storage里面写
SaeStorage ss = new SaeStorage();
// 使用upload方法上传到域为image下
ss.upload("image", realPath + fullFile.getName(),
fullFile.getName());

out.print("upload file:" + realPath + fullFile.getName()
+ "</br>");
}
}
out.print("upload end...");
} catch (Exception e) {
out.print("ERROR:" + e.getMessage() + "</br>");
} finally {
out.flush();
out.close();
}
}

SAE java应用读写文件(TmpFS和Storage)-----绝世好代码,布布扣,bubuko.com

时间: 2024-10-06 09:33:15

SAE java应用读写文件(TmpFS和Storage)-----绝世好代码的相关文章

JAVA多线程读写文件范例

在写之前先声明,本文是基于之前在博客园网站上检索到的一份JAVA多线程读写文件的示例,我在写自己的程序时是在那位作者写的基础上做了改良,但已不记得原文的地址.如果有知情者,烦请帖出地址,我在此文上加入引用或转载. 本程序是基于这么一种考虑,某系统后台有个将近2G大小的日志文件,你用任何编辑器去打开它,都将会很困难.针对这样的大文件解析处理,解决方案是使用多个线程,分割读取指定的大文件.获取我们所需要的信息.不多说,上代码了,有注释可以帮助理解. Java代码   package com.thre

java(IO)读写文件乱码转换UTF-8问题

java(IO)读写文件乱码转换UTF-8问题 读取文件 String?Content?=?"";?//?文件很长的话建议使用StringBuffer try?{ FileInputStream fs=new FileInputStream("文件录取"); InputStreamReader?isr?=?new?InputStreamReader(fis,?"UTF-8"); BufferedReader?br?=?new?BufferedRe

java StringBuffer读写文件

StringBuffer 读写文件 import java.io.; public class FileIO_StringBuffer { public static void main(String[] args) { //读文件到Stringbuffer StringBuffer sb = new StringBuffer(); String sourcePath = "C:\Users\Administrator\Desktop\1.txt";//源文件路径(.*) Buffer

JAVA字节流(读写文件)

InputStream此抽象类是表示字节输入流的所有类的超类.需要定义 InputStream 的子类的应用程序必须始终提供返回下一个输入字节的方法. int available()返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数.void close()关闭此输入流并释放与该流关联的所有系统资源.void mark(int readlimit)在此输入流中标记当前的位置.boolean markSupported()测试此输入流是否支持 mark 和 reset 方

java 流读写文件

public static void createFileToNewPath(InputStream inStream, String newPath) { try { int bytesum = 0; int byteread = 0; FileOutputStream fs = new FileOutputStream(newPath); byte[] buffer = new byte[1444]; while ((byteread = inStream.read(buffer)) !=

用java给html文件添加必要的控制html代码片

这个需求,我估计很多时候都不会用到,但是,我们目前在做一个CMS的系统,在创建页面的时候,需要控制页面各个板块显示的内容来源,这个不是关键,关键是页面内容配置完毕后,如何提交内容,也就是说如何和后台系统通信.这个时候,有两种做法,一种是在页面的控制区域内添加右键菜单,实现这个功能.另外一个做法,就是在页面中添加按钮区域来实现. 但是不管那种做法,控制区域的html页面上的逻辑代码片,都不可能在模板里面添加,这是不友好的,客户也是不会考虑这个的,再说了,他也没有办法考虑.所以,需要CMS系统自动最

java 实现txt文件读取,写入操作实例代码。

一.需求:在txt文件中需要把建表语句的varchar(XXX)里面的XXX乘以4,然后在按照原来的格式进行输出. 需求如下: 转换后如下图: 实现代码如下: package commingming; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public class

Java中的文件和stream流的操作代码

1.Java中FileRead方法的运用代码及详解 package example2;import java.io.FileReader;import java.io.IOException;class FileRead{    public static void main(String[] args) throws IOException{        //创建一个FileWriter对象    //FileWriter fw=new FileWriter("File01.txt"

在android中读写文件

在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外部存储设备(SD卡) 在SD卡中读数据是不需要权限的,但是在SD卡中写数据是要权限的: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 读写文件的方式就是用的Java的文件