实现思路:无论是何种类型,都是转换为流的形式进行的文件传输和存储。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
OutputStreamWriter pw = null;//定义一个流
try {
String file = "D:/test/test.GIF";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
pw = new OutputStreamWriter(new FileOutputStream(“D:/New.GIF”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.GIF”实例
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
pw.write(str);//将要写入文件的内容,可以多次write
};
bre.close();
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class TestAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
xxForm cf = (xxForm)form; //相应的form类
if(cf.getConFileUP()==null){ System.out.println("无上传文件" ); }
else{
FormFile upfile = cf.getConFileUP();//在对应ActionForm中,对应字段应保存为FormFile类型
int filesize = upfile.getFileSize();
String fileName = upfile.getFileName();
System.out.println("接受到文件名称=======" + fileName );
InputStream stream = upfile.getInputStream();//把文件读入
String filePath = "D:/Tomcat 5.5/webapps/upload"+UrlUtil.getContract(); //你的上传服务器目的路径
String finalFileName = String.valueOf(System.currentTimeMillis()) + "." +
fileName.substring(fileName.indexOf(".")+1);
OutputStream bos = new FileOutputStream(filePath+"/" + finalFileName);//建立一个上传文件
int bytesRead = 0;
byte[] buffer = new byte[1024 * 1024 * 5];
while ( (bytesRead = stream.read(buffer, 0, 1024 * 1024 * 5)) != -1) {
bos.write(buffer, 0, bytesRead);//将文件写入服务器
}
bos.close();
stream.close();
}
}
}
你可以作为参考
BufferedReader是高效字符流你怎么能读图片格式的文件呢
DW 也可以实现
请加群java程序设计:2224711