日期:2014-05-18  浏览次数:20725 次

java如何做文件下载?
我想将服务器上的文件生成到本地上,该怎么做?

------解决方案--------------------
用sevlet输出就可以了
看下以前的贴子
http://community.csdn.net/Expert/topic/5604/5604422.xml?temp=.8975641
------解决方案--------------------
可以把文件通过流,写到writeprint对象里面,writprint对象可以通过response.getWrite()方法得到。
------解决方案--------------------
在你的jdk(1.4.2)的Demo包包下面就有一个文件下载的例子,名字好像是CartBar,自己有空研究研究

------解决方案--------------------
http://schmidt.devlib.org/java/file-download.html


import java.io.*;
import java.net.*;

/*
* Command line program to download data from URLs and save
* it to local files. Run like this:
* java FileDownload http://schmidt.devlib.org/java/file-download.html
* @author Marco Schmidt
*/
public class FileDownload {
public static void download(String address, String localFileName) {
OutputStream out = null;
URLConnection conn = null;
InputStream in = null;
try {
URL url = new URL(address);
out = new BufferedOutputStream(
new FileOutputStream(localFileName));
conn = url.openConnection();
in = conn.getInputStream();
byte[] buffer = new byte[1024];
int numRead;
long numWritten = 0;
while ((numRead = in.read(buffer)) != -1) {
out.write(buffer, 0, numRead);
numWritten += numRead;
}
System.out.println(localFileName + "\t " + numWritten);
} catch (Exception exception) {
exception.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
} catch (IOException ioe) {
}
}
}

public static void download(String address) {
int lastSlashIndex = address.lastIndexOf( '/ ');
if (lastSlashIndex > = 0 &&
lastSlashIndex < address.length() - 1) {
download(address, address.substring(lastSlashIndex + 1));
} else {
System.err.println( "Could not figure out local file name for " +
address);
}
}

public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
download(args[i]);
}
}
}
------解决方案--------------------
String filename = "C:\\123.xls ";

response.setContentType( "text/x-msdownload ");
response.addHeader( "Content-Disposition ",
"attachment; filename=\ " " + new String(filename.getBytes(), "ISO-8859-1 ") + "\ " ");

java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(filename);

byte[] b = new byte[1024];
int i = 0;

while ( (i = fis.read(b)) > 0) {
os.write(b, 0, i);
}

fis.close();
os.flush();
os.close();
------解决方案--------------------
up~~输入输出流是我一直困惑的问题~~希望多和大家探讨探讨
------解决方案--------------------
先读出
InputStream is = FileInputStream();
 
后写到本地
outputStream os = FileOutputStream();