java if在内存中_java如何将对象暂存到内存中?

展开全部

form表单提交文件,建议用62616964757a686964616fe59b9ee7ad9431333264623862smartupload上传,暂存在web服务器目录下,然后稍微一下下面的代码,ftp上传后,删除暂存文件,ok

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.StringTokenizer;

import org.apache.commons.net.ftp.FTP;

import org.apache.commons.net.ftp.FTPClient;

import org.apache.commons.net.ftp.FTPReply;

import org.apache.log4j.Logger;

/**

* Ftp 服务类,对Apache的commons.net.ftp进行了包装

* 依赖库文件:commons-net-1.4.1.jar

*

* @version 1.0 2008-02-18

* @author huchao@jbsoft

*/

public class FtpService {

public FtpService(String serverAddr, String lsenport, String userName,

String pswd) {

this.ftpServerAddress = serverAddr;

this.port = Integer.parseInt(lsenport);

this.user = userName;

this.password = pswd;

}

/**

* FTP 服务器地址

*/

private String ftpServerAddress = null;

/**

* FTP 服务端口

*/

private int port = 21;

/**

* FTP 用户名

*/

private String user = null;

/**

* FTP 密码

*/

private String password = null;

/**

* FTP 数据传输超时时间

*/

private int timeout = 0;

/**

* 异常:登录失败

*/

private final I2HFException EXCEPTION_LOGIN = new I2HFException("COR101",

"FTP服务器登录失败");

/**

* 异常:文件传输失败

*/

private final I2HFException EXCEPTION_FILE_TRANSFER = new I2HFException(

"COR010", "FTP文件传输失败");

/**

* 异常:IO异常

*/

private final I2HFException EXCEPTION_GENERAL = new I2HFException("COR010",

"FTP IO 异常");

private static final Logger logger = Logger.getLogger(FtpService.class);

/**

* 初始化FTP连接,并进行用户登录

*

* @return FTPClient

* @throws I2HFException

*/

public FTPClient initConnection() throws I2HFException {

FTPClient ftp = new FTPClient();

try {

// 连接到FTP

ftp.connect(ftpServerAddress, port);

int reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

throw new I2HFException("COR010", "FTP服务器连接失败");

}

// 登录

if (!ftp.login(user, password)) {

throw EXCEPTION_LOGIN;

}

// 传输模式使用passive

ftp.enterLocalPassiveMode();

// 设置数据传输超时时间

ftp.setDataTimeout(timeout);

logger.info("FTP服务器[" + ftpServerAddress + " : " + port + "]登录成功");

} catch (I2HFException te) {

logger.info(te.errorMessage, te);

throw te;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_LOGIN;

}

return ftp;

}

/**

* 设置传输方式

*

* @param ftp

* @param binaryFile

* true:二进制/false:ASCII

* @throws I2HFException

*/

public void setTransferMode(FTPClient ftp, boolean binaryFile)

throws I2HFException {

try {

if (binaryFile) {

ftp.setFileType(FTP.BINARY_FILE_TYPE);

logger.info("FTP文件传输方式为:二进制");

} else {

ftp.setFileType(FTP.ASCII_FILE_TYPE);

logger.info("FTP文件传输方式为:ASCII");

}

} catch (IOException ex) {

logger.info(ex.getMessage(), ex);

throw EXCEPTION_GENERAL;

}

}

/**

* 在当前工作目录下建立多级目录结构

*

* @param ftp

* @param dir

* @throws I2HFException

*/

public void makeMultiDirectory(FTPClient ftp, String dir)

throws I2HFException {

try {

StringBuffer fullDirectory = new StringBuffer();

StringTokenizer toke = new StringTokenizer(dir, "/");

while (toke.hasMoreElements()) {

String currentDirectory = (String) toke.nextElement();

fullDirectory.append(currentDirectory);

ftp.makeDirectory(fullDirectory.toString());

if (toke.hasMoreElements()) {

fullDirectory.append('/');

}

}

} catch (IOException ex) {

logger.info(ex.getMessage(), ex);

throw EXCEPTION_GENERAL;

}

}

/**

* 更改服务器当前路径

*

* @param ftp

* @param dir

* @throws I2HFException

*/

public void changeWorkingDirectory(FTPClient ftp, String dir)

throws I2HFException {

try {

if (!ftp.changeWorkingDirectory(dir)) {

throw new I2HFException("COR010", "目录[ " + dir + "]进入失败");

}

} catch (I2HFException tfe) {

logger.info(tfe.errorMessage, tfe);

throw tfe;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_GENERAL;

}

}

/**

* 上传文件到FTP服务器

*

* @param ftp

* @param localFilePathName

* @param remoteFilePathName

* @throws I2HFException

*/

public void uploadFile(FTPClient ftp, String localFilePathName,

String remoteFilePathName) throws I2HFException {

InputStream input = null;

try {

input = new FileInputStream(localFilePathName);

boolean result = ftp.storeFile(remoteFilePathName, input);

if (!result) {

// 文件上传失败

throw EXCEPTION_FILE_TRANSFER;

}

logger.info("文件成功上传到FTP服务器");

} catch (I2HFException tfe) {

logger.info(tfe.getMessage(), tfe);

throw tfe;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_FILE_TRANSFER;

} finally {

try {

if (input != null) {

input.close();

}

} catch (IOException ex) {

logger.info("FTP对象关闭异常", ex);

}

}

}

/**

* 下载文件到本地

*

* @param ftp

* @param remoteFilePathName

* @param localFilePathName

* @throws I2HFException

*/

public void downloadFile(FTPClient ftp, String remoteFilePathName,

String localFilePathName) throws I2HFException {

boolean downloadResult = false;

OutputStream output = null;

try {

output = new FileOutputStream(localFilePathName);

downloadResult = ftp.retrieveFile(remoteFilePathName, output);

if (!downloadResult) {

// 如果是文件不存在将异常抛出

throw new I2HFException("COR011", "文件不存在");

}

logger.info("文件成功从FTP服务器下载");

} catch (I2HFException tfe) {

logger.error(tfe.getMessage(), tfe);

throw tfe;

} catch (IOException ex) {

logger.error(ex.getMessage(), ex);

throw EXCEPTION_FILE_TRANSFER;

} finally {

try {

if (output != null) {

output.close();

}

if (!downloadResult) {

new File(localFilePathName).delete();

}

} catch (IOException ex) {

logger.error("FTP对象关闭异常", ex);

}

}

}

/**

* Method setFtpServerAddress.

*

* @param ftpServerAddress

* String

*/

public void setFtpServerAddress(String ftpServerAddress) {

this.ftpServerAddress = ftpServerAddress;

}

/**

* Method setUser.

*

* @param user

* String

*/

public void setUser(String user) {

this.user = user;

}

/**

* Method setPassword.

*

* @param password

* String

*/

public void setPassword(String password) {

this.password = password;

}

/**

* Method setTimeout.

*

* @param timeout

* String

*/

public void setTimeout(String timeout) {

try {

this.timeout = Integer.parseInt(timeout);

} catch (NumberFormatException ex) {

// 默认超时时间500毫秒

this.timeout = 500;

}

}

/**

* Method setPort.

*

* @param port

* String

*/

public void setPort(String port) {

try {

this.port = Integer.parseInt(port);

} catch (NumberFormatException ex) {

// 默认端口21

this.port = 21;

}

}

}

=====================================

jsp上传部分

===================================

上传本地文件:

============================================

上传的servlet用的是smartupload

,部分代码可以参考一下:

==========================================

SmartUpload su = new SmartUpload();

su.setCharset("UTF-8");

su.initialize(getServletConfig(), request, response);

su.setMaxFileSize(10240000);

su.setTotalMaxFileSize(102400000);

su.setAllowedFilesList("xls");

su.upload();

===========================================

代码里面有一些客户的信息,不能全部给你哈

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S+Docker理论与实践深度集成

前言&#xff1a; 这篇文章主要介绍了26道Spring经典面试题总结(附带答案)的相关资料,小编在网上看到的觉得挺不错的&#xff0c;现在分享给大家&#xff0c;希望对你们有所帮助。 另外本人整理收藏了多家公司面试知识点整理 &#xff0c;以及各种Java核心知识点免费分享给大…

Kafka的精髓全写这本“限量笔记”里了

前言 大厂面试真题向来是求职者的最佳练兵场&#xff0c;华为在Java开发工程师招聘中有哪些技术性考察和倾向&#xff1f;那今天咱就给大家分享一下近期的华为5面面经&#xff01; 注&#xff1a;以下所分享的华为面试问题&#xff0c;相关的答案我也整理出来了&#xff0c;且…

MongoDB数据分布不均的解决方案

前言 算法血拼&#xff1a;Google百度Alibaba字节Tencent网易360拼夕夕美团 不知不觉双11就来了,轰轰烈烈的秋招也完美结束了,不知算法与数据结构成为了多少小伙伴进击大厂的绊脚石&#xff1f; 恰好&#xff0c;我这两天花了点时间&#xff0c;整理了些各大厂&#xff08;G…

Mybatis-plus常用API全套教程

前言 前两天&#xff0c;我收到了蚂蚁金服的offer&#xff0c;从朋友的内推开始面试到拿到最后offer经历了4面技术、一面交叉面和一面HR面。经过了漫长的等待和几次几乎折磨的面试之后&#xff0c;终于拿到了offer。 正文 下文中截图来源于朋友一个pdf版本的面经&#xff0c;…

我的世界手动选择java_如何选中路径-我的世界怎么选择java路?我的世界怎么选择java路径 爱问知识人...

2014-06-03 11:26:47首先确定你安装了Java&#xff0c;如没有自行去官网下载最近版本 如果已安装&#xff0c;打开启动器&#xff0c;一般的启动器都有设置选项&#xff0c;在设置里选择正确的Java路径或者让启动器自行搜索 设置完毕后启动游戏~全部2014-06-03 11:26:472014-06…

Mycat和Mysql搭建高可用企业数据库集群

个人背景 如标题所示&#xff0c;我的个人背景非常简单&#xff0c;Java开发经验1年半&#xff0c;学历普通&#xff0c;2本本科毕业&#xff0c;毕业后出来就一直在Crud&#xff0c;在公司每天重复的工作对我的技术提升并没有什么帮助&#xff0c;但小镇出来的我也深知自我努…

MySQL+Tomcat+JVM,看完还怕面试官

前言 我朋友也是个写了四年Java代码的程序员&#xff0c;跟女友已经恋爱多年&#xff0c;最近突然结婚了。 他结婚以前&#xff0c;换了一家公司&#xff0c;咱俩就好久没见过面了。刚好今天出门办事碰上了&#xff0c;找了一家店坐一起喝酒聊天。 我聊天时打趣他&#xff1…

java因子分析_因子分析(Factor Analysis)

1 问题之前我们考虑的训练数据中样例的个数m都远远大于其特征个数n&#xff0c;这样不管是进行回归、聚类等都没有太大的问题。然而当训练样例个数m太小&#xff0c;甚至m<多元高斯分布的参数估计公式如下&#xff1a;分别是求mean和协方差的公式&#xff0c;表示样例&#…

MySQL+多线程+Redis+算法+网络

开头 我们面试的时候 &#xff0c;经常会被问这种到问题:Spring中bean的循环依赖怎么解决&#xff1f; Spring中bean的加载过程&#xff1f; spring相关的问题一直是大厂面试常问到的一个问题,也是一直困扰这我们&#xff0c;不知道从哪里下手&#xff0c;今天举例分析大厂的一…

python 函数进度条怎么_python输出结果刷新及进度条的实现操作

print函数python输出主要使用print函数&#xff0c;print函数介绍&#xff1a;print(*objects, sep" ", end"", filesys.stdout, flushFalse)*objects表示要打印的值&#xff0c;表示多个无名参数或需要打印的值&#xff1b;sep" "&#xff0c;对…

MySQL优化原理分析及优化方案总结

前言 今天中午收到我司安全部发了一封邮件&#xff1a;Jackson存在安全漏洞。查了一下&#xff0c;这件事并不算很新鲜了&#xff08;已经过了5天的样子&#xff09;&#xff0c;本文来聊聊吧。 说起来还蛮戏剧化&#xff1a;阿里云向Jackson官方提交了一个Jackson序列化安全…

MySQL千万数据量深分页优化

前言 提到MySQL的事务&#xff0c;我相信对MySQL有了解的同学都能聊上几句&#xff0c;无论是面试求职&#xff0c;还是日常开发&#xff0c;MySQL的事务都跟我们息息相关。 而事务的ACID&#xff08;即原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durabili…

Mysql和Redis数据同步该怎么做

前言 算法血拼&#xff1a;Google百度Alibaba字节Tencent网易360拼夕夕美团 不知不觉双11就来了,轰轰烈烈的秋招也完美结束了,不知算法与数据结构成为了多少小伙伴进击大厂的绊脚石&#xff1f; 恰好&#xff0c;我这两天花了点时间&#xff0c;整理了些各大厂&#xff08;G…

java源代码保存在扩展名为,看完跪了

正文 在实际的工作项目中&#xff0c; 缓存成为高并发、高性能架构的关键组件 &#xff0c;那么Redis为什么可以作为缓存使用呢&#xff1f;首先可以作为缓存的两个主要特征&#xff1a; 在分层系统中处于内存/CPU具有访问性能良好&#xff0c;缓存数据饱和&#xff0c;有良好…

java源码文件丢恢复需要多少钱,上岸蚂蚁金服!

京东Java研发岗一面&#xff08;基础面&#xff0c;约1小时&#xff09; 自我介绍&#xff0c;主要讲讲做了什么和擅长什么 springmvc和spring-boot区别 Autowired的实现原理 Bean的默认作用范围是什么&#xff1f;其他的作用范围&#xff1f; 索引是什么概念有什么作用&am…

java特性多态,90%的人看完都说好

01.第一份资料是图解网络 根据读者阅读偏好不同&#xff0c;共出了两个版本风格的 PDF&#xff0c;分别是亮白版本和暗黑版本。 02.第二份资料是计算机的相关知识 看完能让你对计算机有一个基础的了解和入门&#xff0c;是培养你 内核 的基础&#xff0c;我们看下目录大纲 基…

java环境变量怎么配置,详解系列文章

Git是什么 在回忆Git是什么的话&#xff0c;我们先来复习这几个概念哈~ 什么是版本控制&#xff1f; 百度百科定义是酱紫的~ 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理&#xff0c;是软件配置管理的核心思想之一。 那些年&#xff0c;…

java环境变量的配置与详解,这些知识你必须拿下

1.三重心智模型 先给大家科普一个概念&#xff0c;“三重心智模型”。 认知科学家斯坦诺维奇&#xff0c;将人的心智模式&#xff0c;分成了三个部分。 第一层是自主心智&#xff0c;自主心智是我们通过进化与内隐学习获得。比如&#xff0c;我们看到蛇就会害怕&#xff0c;情…

centos php安装redis扩展,Centos7编译安装redis、php安装phpredis扩展

解压 进入 make&#xff1a;# tar zxvf redis-4.0.9.tar.gz# cd redis-4.0.9/# make# cd src# make install为了方便管理&#xff0c;将Redis文件中的配置文件和常用命令移动到统一文件中&#xff1a;# mkdir –p /usr/local/redis/bin# mkdir –p /usr/local/redis/etc# cp /t…

java环境变量的配置步骤,实现原理分析

1.笔试常见的问题&#xff1f; 面试常见的问题上面给的面试题链接基本都有。我只提几点&#xff1a; 写SQL&#xff1a;写SQL很常考察group by、内连接和外连接。手写代码&#xff1a;手写代码一般考单例、排序、线程、消费者生产者。我建议排序算法除了冒泡排序&#xff0c;…