下載就很簡(jiǎn)單了
公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出鼓樓免費(fèi)做網(wǎng)站回饋大家。
把你要下載的文件做成超級(jí)鏈接,可以不用任何組件
比如說(shuō)
下載一個(gè)word文檔
a href="名稱(chēng).doc"名稱(chēng).doc/a
路徑你自己寫(xiě)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URI;
import java.net.URL;
import java.util.Random;
/**
*
* 實(shí)現(xiàn)了下載的功能*/
public class SimpleTh {
public static void main(String[] args){
// TODO Auto-generated method stub
//String path = "倩女幽魂.mp3";//MP3下載的地址
String path ="";
try {
new SimpleTh().download(path, 3); //對(duì)象調(diào)用下載的方法
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getFilename(String path){//獲得文件的名字
return path.substring(path.lastIndexOf('/')+1);
}
public void download(String path,int threadsize) throws Exception//下載的方法
{//參數(shù) 下載地址,線程數(shù)量
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();//獲取HttpURLConnection對(duì)象
conn.setRequestMethod("GET");//設(shè)置請(qǐng)求格式,這里是GET格式
conn.setReadTimeout(5*1000);//
int filelength = conn.getContentLength();//獲取要下載文件的長(zhǎng)度
String filename = getFilename(path);
File saveFile = new File(filename);
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.setLength(filelength);
accessFile.close();
int block = filelength%threadsize ==0?filelength/threadsize:filelength/threadsize+1;
for(int threadid = 0;threadid=threadsize;threadid++){
new DownloadThread(url,saveFile,block,threadid).start();
}
}
private final class DownloadThread extends Thread{
private URL url;
private File saveFile;
private int block;//每條線程下載的長(zhǎng)度
private int threadid;//線程id
public DownloadThread(URL url,File saveFile,int block,int threadid){
this.url = url;
this.saveFile= saveFile;
this.block = block;
this.threadid = threadid;
}
@Override
public void run() {
//計(jì)算開(kāi)始位置的公式:線程id*每條線程下載的數(shù)據(jù)長(zhǎng)度=?
//計(jì)算結(jié)束位置的公式:(線程id+1)*每條線程下載數(shù)據(jù)長(zhǎng)度-1=?
int startposition = threadid*block;
int endposition = (threadid+1)*block-1;
try {
try {
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.seek(startposition);//設(shè)置從什么位置寫(xiě)入數(shù)據(jù)
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(5*1000);
conn.setRequestProperty("Range","bytes= "+startposition+"-"+endposition);
InputStream inStream = conn.getInputStream();
byte[]buffer = new byte[1024];
int len = 0;
while((len = inStream.read(buffer))!=-1){
accessFile.write(buffer, 0, len);
}
inStream.close();
accessFile.close();
System.out.println("線程id:"+threadid+"下載完成");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
你的這段代碼有兩處讓人疑惑。其一、File()這個(gè)構(gòu)造函數(shù),自已查下API
其二、FileOutputStream,F(xiàn)ileOutputStream(String name)創(chuàng)建一個(gè)向具有指定名稱(chēng)的文件中寫(xiě)入數(shù)據(jù)的輸出文件流。它只是創(chuàng)建了一個(gè)輸出流,其中沒(méi)有具體的值,那么這個(gè)值來(lái)自哪呢,其就來(lái)自于你的輸入流。其中FileOutputStream()中只是創(chuàng)建了一個(gè)字節(jié)輸出流,其只能接受字節(jié)流的輸出,所以它還需要與DataOutputStream()的配合才能完成輸出,具體用法你可以查API
這個(gè)要做定時(shí)任務(wù)的,ftp不可能主動(dòng)給你發(fā),只能自己每隔多長(zhǎng)時(shí)間就去檢索一次,應(yīng)該把ftp文件目錄結(jié)構(gòu)和文件名稱(chēng)全部存入數(shù)據(jù)庫(kù),在下載時(shí)候?qū)ξ募臉?biāo)識(shí)狀態(tài)位進(jìn)行更新,方便于對(duì)文件的判斷。然后從ftp下載文件即可。如果需要連接ftp下載文件的代碼,可以發(fā)送郵件到JavaWebDevelop@hotmial.com
package cn.itcast.struts2.demo1;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 完成文件上傳 (不是解析上傳內(nèi)容,因?yàn)樯蟼鲀?nèi)容 由fileUpload攔截器負(fù)責(zé)解析)
*
* @author seawind
*
*/
public class UploadAction extends ActionSupport {
// 接收上傳內(nèi)容
// input type="file" name="upload" /
private File upload; // 這里變量名 和 頁(yè)面表單元素 name 屬性一致
private String uploadContentType;
private String uploadFileName;
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
if (upload == null) { // 通過(guò)xml配置 required校驗(yàn)器 完成校驗(yàn)
// 沒(méi)有上傳文件
return NONE;
}
// 將上傳文件 保存到服務(wù)器端
// 源文件 upload
// 目標(biāo)文件
File destFile = new File(ServletActionContext.getServletContext()
.getRealPath("/upload") + "/" + uploadFileName);
// 文件復(fù)制 使用commons-io包 提供 工具類(lèi)
FileUtils.copyFile(upload, destFile);
return NONE;
}
}
多文件上傳
package cn.itcast.struts2.demo1;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 支持多文件上傳
*
* @author seawind
*
*/
public class MultiUploadAction extends ActionSupport {
// 接收多文件上傳參數(shù),提供數(shù)組接收就可以了
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;
public void setUpload(File[] upload) {
this.upload = upload;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
for (int i = 0; i upload.length; i++) {
// 循環(huán)完成上傳
File srcFile = upload[i];
String filename = uploadFileName[i];
// 定義目標(biāo)文件
File destFile = new File(ServletActionContext.getServletContext()
.getRealPath("/upload" + "/" + filename));
FileUtils.copyFile(srcFile, destFile);
}
return NONE;
}
}
名稱(chēng)欄目:java下載各類(lèi)文件代碼 java下載各類(lèi)文件代碼怎么寫(xiě)
當(dāng)前鏈接:http://www.chinadenli.net/article12/dddojdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、電子商務(wù)、網(wǎng)站維護(hù)、ChatGPT、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)