當前位置:首頁 » 文件管理 » applet大文件上傳

applet大文件上傳

發布時間: 2023-07-21 04:29:06

A. 要用java實現多線程的文件上傳該如何去做

的資源消耗,因此,在進行同類事情,需要進行互相的通訊等等事情的時候,都採用線程來進行處理。

對於只做固定的一件事情(比如:計算1+2+3+...+9999999)來說,其性能上不會比採用單線程的整體效率高,原因是,同時都是要做這么多運算,採用多線程的話,系統在進行線程調度的過程中喙浪費一些資源和時間,從而性能上下降。

那麼,多線程是否就沒有存在的意義了呢?答案當然不是的。多線程還是有存在的價值的,我們在寫輸入流輸出流,寫網路程序等等的時候,都會出現阻塞的情況,如果說,我們不使用多線程的話,從A中讀數據出來的時候,A因為沒有準備好,而整個程序阻塞了,其他的任何事情都沒法進行。如果採用多線程的話,你就不用擔心這個問題了。還舉個例子:游戲中,如果A角色和B角色採用同一個線程來處理的話,那麼,很有可能就會出現只會響應A角色的操作,而B角色就始終被佔用了的情況,這樣,玩起來肯定就沒勁了。

因此,線程是有用的,但也不是隨便亂用,亂用的話,可能造成性能的低下,它是有一點的適用范圍的,一般我認為:需要響應多個人的事情,從設計上需要考慮同時做一些事情(這些事情很多情況下可能一點關系都沒有,也有可能有一些關系的)。

使用多線程的時候,如果某些線程之間涉及到資源共享、互相通訊等等問題的時候,一定得注意線程安全的問題,根據情況看是不是需要使用synchronized關鍵字。
另外,站長團上有產品團購,便宜有保證

B. java 伺服器與客戶端的文件傳輸

可以直接通過流的形式上傳或者下載。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import hkrt.b2b.view.util.Log;
import java.util.Vector;
import zn.ccfccb.util.CCFCCBUtil;

/**
*/
public class CCFCCBSftp {

/**
* 連接sftp伺服器
*
* @return
*/
public static ChannelSftp connect() {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jsch.getSession(CCFCCBUtil.CCFCCBHOSTNAME, CCFCCBUtil.CCFCCBHOSTNAME, 22);
Session sshSession = jsch.getSession(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBHOSTNAME, 22);
System.out.println("Session created.");
sshSession.setPassword(CCFCCBUtil.CCFCCBLOGINPASSWORD);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
System.out.println("Session connected.");
System.out.println("Opening Channel.");
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
System.out.println("Connected to " + CCFCCBUtil.CCFCCBHOSTNAME + ".");
} catch (Exception e) {

}
return sftp;
}

/**
* 連接sftp伺服器
*
* @param host 主機
* @param port 埠
* @param username 用戶名
* @param password 密碼
* @return
*/
public static ChannelSftp connect(String host, int port, String username,
String password) {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jsch.getSession(CCFCCBUtil.CCFCCBHOSTNAME, CCFCCBUtil.CCFCCBHOSTNAME, 22);
Session sshSession = jsch.getSession(CCFCCBUtil.CCFCCBLOGINNAME, host, port);
System.out.println("Session created.");
sshSession.setPassword(CCFCCBUtil.CCFCCBLOGINPASSWORD);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
System.out.println("Session connected.");
System.out.println("Opening Channel.");
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
System.out.println("Connected to " + host + ".");
} catch (Exception e) {

}
return sftp;
}

/**
* 上傳文件
*
* @param directory 上傳的目錄
* @param uploadFile 要上傳的文件
* @param sftp
*/
public void upload(String directory, String uploadFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file = new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 下載文件
*
* @param directory 下載目錄
* @param downloadFile 下載的文件
* @param saveFile 存在本地的路徑
* @param sftp
* @return
*/
public static String download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file = new File(saveFile);
FileOutputStream fos = new FileOutputStream(file);
sftp.get(downloadFile, fos);
sftp.disconnect();
fos.close();
} catch (Exception e) {
Log.info("下載文件過程出錯:" + e.getMessage());
return "false";
}

return "true";
}

/**
* 刪除文件
*
* @param directory 要刪除文件所在目錄
* @param deleteFile 要刪除的文件
* @param sftp
*/
public void delete(String directory, String deleteFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
sftp.rm(deleteFile);
} catch (Exception e) {
}
}

/**
* 列出目錄下的文件
*
* @param directory 要列出的目錄
* @param sftp
* @return
* @throws SftpException
*/
public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException {
return sftp.ls(directory);
}

public static void main(String[] args) {
CCFCCBSftp sf = new CCFCCBSftp();
String host = CCFCCBUtil.CCFCCBHOSTNAME;
int port = 22;
String username = CCFCCBUtil.CCFCCBLOGINNAME;
String password = CCFCCBUtil.CCFCCBLOGINPASSWORD;
String directory = "/ccfccb/904999900099/download/";
//String uploadFile = "D:\\tmp\\upload.txt";
String downloadFile = "CCF_904999900099_20150317_0001.zip";
String saveFile = CCFCCBUtil.CCFCCBUploadFilePath + "//" + "CCF_904999900099_20150317_0001.zip";
//String deleteFile = "delete.txt";
ChannelSftp sftp = CCFCCBSftp.connect(host, port, username, password);
//sf.upload(directory, uploadFile, sftp);
CCFCCBSftp.download(directory, downloadFile, saveFile, sftp);
//sf.delete(directory, deleteFile, sftp);
try {
sftp.cd(directory);
// sftp.mkdir("ss");
System.out.println("finished");
} catch (Exception e) {
}
}
}

熱點內容
手機網頁緩存視頻 發布:2025-02-03 23:38:48 瀏覽:830
agnes演算法 發布:2025-02-03 23:38:05 瀏覽:33
私密上傳在哪 發布:2025-02-03 23:33:04 瀏覽:1002
切冰解壓 發布:2025-02-03 23:30:36 瀏覽:768
解壓攪拌聲 發布:2025-02-03 23:11:35 瀏覽:835
伺服器硬碟誤拔了怎麼辦 發布:2025-02-03 23:05:26 瀏覽:872
易手遙控連接密碼是多少 發布:2025-02-03 22:44:26 瀏覽:171
sql安裝程序配置伺服器失敗 發布:2025-02-03 22:44:25 瀏覽:592
可以寫腳本的點擊器 發布:2025-02-03 22:44:22 瀏覽:620
c演算法代碼 發布:2025-02-03 22:42:20 瀏覽:866