java下载文件(Java 下载文件的方法怎么写)
尊敬的读者,java下载文件和Java 下载文件的方法怎么写是当前备受关注的话题,但许多人对其仍存在疑惑。在本篇文章中,我将为你提供清晰的解释和深入的分析,希望能满足你的求知欲望。
Java 下载文件的方法怎么写
参考下面
public HttpServletResponse download(String path, HttpServletResponse response){
try{
// path是指欲下载的文件的路径。
File file= new File(path);
//取得文件名。
String filename= file.getName();
//取得文件的后缀名。
String ext= filename.substring(filename.lastIndexOf(".")+ 1).toUpperCase();
//以流的形式下载文件。
InputStream fis= new BufferedInputStream(new FileInputStream(path));
byte[] buffer= new byte[fis.available()];
fis.read(buffer);
fis.close();
//清空response
response.reset();
//设置response的Header
response.addHeader("Content-Disposition","attachment;filename="+ new String(filename.getBytes()));
response.addHeader("Content-Length",""+ file.length());
OutputStream toClient= new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch(IOException ex){
ex.printStackTrace();
}
return response;
}
//下载本地文件
public void downloadLocal(HttpServletResponse response) throws FileNotFoundException{
String fileName="Operator.doc".toString();//文件的默认保存名
//读到流中
InputStream inStream= new FileInputStream("c:/Operator.doc");//文件的存放路径
//设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition","attachment; filename=\""+ fileName+"\"");
//循环取出流中的数据
byte[] b= new byte[100];
int len;
try{
while((len= inStream.read(b))> 0)
response.getOutputStream().write(b, 0, len);
inStream.close();
} catch(IOException e){
e.printStackTrace();
}
}
//下载网络文件
public void downloadNet(HttpServletResponse response) throws MalformedURLException{
int bytesum= 0;
int byteread= 0;
URL url= new URL("windine.blogdriver.com/logo.gif");
try{
URLConnection conn= url.openConnection();
InputStream inStream= conn.getInputStream();
FileOutputStream fs= new FileOutputStream("c:/abc.gif");
byte[] buffer= new byte[1204];
int length;
while((byteread= inStream.read(buffer))!=-1){
bytesum+= byteread;
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
} catch(FileNotFoundException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
//支持在线打开文件的一种方式
public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception{
File f= new File(filePath);
if(!f.exists()){
response.sendError(404,"File not found!");
return;
}
BufferedInputStream br= new BufferedInputStream(new FileInputStream(f));
byte[] buf= new byte[1024];
int len= 0;
response.reset();//非常重要
if(isOnLine){//在线打开方式
URL u= new URL("file:///"+ filePath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition","inline; filename="+ f.getName());
//文件名应该编码成UTF-8
} else{//纯下载方式
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition","attachment; filename="+ f.getName());
}
OutputStream out= response.getOutputStream();
while((len= br.read(buf))> 0)
out.write(buf, 0, len);
br.close();
out.close();
}
java 如何下载文件
我用struts2给你实现:
1.首先struts2.xml里面
<action name="download" class="com.zfj.action.DownloadAction">
<!--注意这里不再是返回一个字符串找到一个页面了
从服务器返回到本地客户端是一个流我们需要配置流信息
type:表示接受方式或者跳转方法是
默认是 dispatcher请求转发,所以之前我们一般不书写这个参数但是这里需要更改为stream重定向
-->
<result type="stream">
<!--
因为之前我们设置的execute方法返回一个String,但是我们现在需要返回一个流。这里我们要指定一个新的方法为我们处理业务逻
辑并且返回流所以默认execute方法对我们没有作用了,在这里我们指定一个新的方法为我们处理业务逻辑并且最后返回流
这里的inputName是固定写法后面的名字dname要跟 action里面的getDname对应
-->
<param name="inputName">dname</param>
<!--当流返回过来时,我们应当设置头信息
给浏览器,这里设置的都是流信息
name里面的是固定写法
attachment:表示使用附件下载
online:直接打开
分号后的filename是固定写法,后面通过一个ognl表达式
引用下载的文件名
-->
<param name="contentDisposition">attachment;filename=${filename}</param>
</result>
</action>
这里不再是返回一个字符串找到一个页面了。从服务器返回到本地客户端是一个流,我们需要配置流信息。
type:表示接受方式或者跳转方式是(默认是dispathcher请求转发,所以之前我们一般不书写这个,但是这里下载需要更改stream)
2.对应的DownloadAction
@Override
public String execute() throws Exception{
return this.SUCCESS;
}
//这里的getEtoak要跟struts.xml里的inputName的值对应
public InputStream getEtoak() throws Exception{
return new FileInputStream(
ServletActionContext.getServletContext()
.getRealPath("/image")
+"/"
+ this.getFilename());
}
Java如何利用url下载MP3保存到本地
Java如何利用url下载MP3保存的方法:
1/**;
2* TODO下载文件到本地;
3*@author nadim;
4*@date Sep 11, 2015 11:45:31 AM;
5*@param fileUrl远程地址;
6*@param fileLocal本地路径;
7*@throws Exception;
8*/;
9 public void downloadFile(String fileUrl,String fileLocal) throws Exception{;
10 URL url= new URL(fileUrl);
11 HttpURLConnection urlCon=(HttpURLConnection) url.openConnection();
12 urlCon.setConnectTimeout(6000);
13 urlCon.setReadTimeout(6000);
14 int code= urlCon.getResponseCode();
15 if(code!= HttpURLConnection.HTTP_OK){
16 throw new Exception("文件读取失败");
17}
18//读文件流;
19 DataInputStream in= new DataInputStream(urlCon.getInputStream());
20 DataOutputStream out= new DataOutputStream(new FileOutputStream(fileLocal));
21 byte[] buffer= new byte[2048];
22 int count= 0;
23 while((count= in.read(buffer))> 0){;
24 out.write(buffer, 0, count);
25}
26 out.close();
27 in.close();
28}。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
如果你还想了解更多这方面的信息,记得收藏关注本站。