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.pswp.cn/news/385881.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385881.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385881.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

K8S+Docker理論與實踐深度集成

前言&#xff1a; 這篇文章主要介紹了26道Spring經典面試題總結(附帶答案)的相關資料,小編在網上看到的覺得挺不錯的&#xff0c;現在分享給大家&#xff0c;希望對你們有所幫助。 另外本人整理收藏了多家公司面試知識點整理 &#xff0c;以及各種Java核心知識點免費分享給大…

java 注解 方法 參數_java在注解中綁定方法參數的解決方案

我們有這樣子的需求&#xff0c;需要記錄用戶操作某個方法的信息并記錄到日志里面&#xff0c;例如&#xff0c;用戶在保存和更新任務的時候&#xff0c;我們需要記錄下用戶的ip&#xff0c;具體是保存還是更新&#xff0c;調用的是哪個方法&#xff0c;保存和更新的任務名稱以…

Kafka的精髓全寫這本“限量筆記”里了

前言 大廠面試真題向來是求職者的最佳練兵場&#xff0c;華為在Java開發工程師招聘中有哪些技術性考察和傾向&#xff1f;那今天咱就給大家分享一下近期的華為5面面經&#xff01; 注&#xff1a;以下所分享的華為面試問題&#xff0c;相關的答案我也整理出來了&#xff0c;且…

gcc是java的什么意思_為什么gcc支持Java而不是C#

我已經seen this question了,我想知道是否有任何技術理由可以證明gcc支持Java但不支持C#.如果我理解,Java也是一種解釋性語言.如果Mono提供C#編譯器和CIL的實現,為什么不能創建一個將C#轉換為IL然后靜態編譯的gcc c#編譯器&#xff1f;解決方法:如果編譯器工具鏈不支持特定語言…

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;但小鎮出來的我也深知自我努…

java過濾器如何操作數據庫_jsp – 使用Java中的過濾器驗證用戶名,密碼(與數據庫聯系)...

String sql”select * from reg where username”user”‘ and pass”pwd”‘”;這是一個非常糟糕的做法.這種方法要求用戶名和密碼都通過請求傳遞普通香草.而且,你有一個SQL注入攻擊漏洞.利用會話,在JSP / Servlet中你有HttpSession.實際上也沒有必要在使用過濾器的每個請求上…

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…

python字符串是用雙引號括起來的_用python連接字符串列表并用引號將每個字符串括起來...

您也可以執行一個format調用>>> words [hello, world, you, look, nice]>>> "{0}".format(", ".join(words))"hello", "world", "you", "look", "nice"更新&#xff1a;一些基準測試…

java源代碼保存在擴展名為,看完跪了

正文 在實際的工作項目中&#xff0c; 緩存成為高并發、高性能架構的關鍵組件 &#xff0c;那么Redis為什么可以作為緩存使用呢&#xff1f;首先可以作為緩存的兩個主要特征&#xff1a; 在分層系統中處于內存/CPU具有訪問性能良好&#xff0c;緩存數據飽和&#xff0c;有良好…

java源碼文件丟恢復需要多少錢,上岸螞蟻金服!

京東Java研發崗一面&#xff08;基礎面&#xff0c;約1小時&#xff09; 自我介紹&#xff0c;主要講講做了什么和擅長什么 springmvc和spring-boot區別 Autowired的實現原理 Bean的默認作用范圍是什么&#xff1f;其他的作用范圍&#xff1f; 索引是什么概念有什么作用&am…

php 靜態方法特點,淺析php靜態方法與非靜態方法的用法區別

在php編程中&#xff0c;static關鍵字聲明一個屬性或方法是和類相關的&#xff0c;而不是和類的某個特定的實例相關&#xff0c;因此&#xff0c;這類屬性或方法也稱為“類屬性”或“類方法”如果訪問控制權限允許&#xff0c;可不必創建該類對象而直接使用類名加兩個冒號“::”…