首页编程java下载文件(Java 下载文件的方法怎么写)

java下载文件(Java 下载文件的方法怎么写)

编程之家2023-11-03103次浏览

尊敬的读者,java下载文件和Java 下载文件的方法怎么写是当前备受关注的话题,但许多人对其仍存在疑惑。在本篇文章中,我将为你提供清晰的解释和深入的分析,希望能满足你的求知欲望。

java下载文件(Java 下载文件的方法怎么写)

Java 下载文件的方法怎么写

参考下面

public HttpServletResponse download(String path, HttpServletResponse response){

try{

// path是指欲下载的文件的路径。

File file= new File(path);

//取得文件名。

java下载文件(Java 下载文件的方法怎么写)

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()];

java下载文件(Java 下载文件的方法怎么写)

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语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

如果你还想了解更多这方面的信息,记得收藏关注本站。

文本框组合(多个文本框怎么组合在一起)kotlin能取代java吗?kotlin能取代java吗的最新相关信息