Java 单文件下载及重命名

代码(仅供参考):

 1 /*
 2 * 另存为
 3 */
 4 @RequestMapping("/saveAs.do")
 5 public @ResponseBody void saveAs(String filePath,String fileName){
 6
 7 try {
 8 File file=new File(filePath);
 9 //设置文件MIME类型
10 getResponse().setContentType(getMIMEType(file));
11 //设置Content-Disposition
12 getResponse().setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8")); //此处可以重命名
13 //获取目标文件的绝对路径
14 String fullFileName = getRealPath("/upload/"+filePath);
15 //System.out.println(fullFileName);
16 //读取文件
17 InputStream in = new FileInputStream(fullFileName);
18 //读取目标文件,通过response将目标文件写到客户端
19 OutputStream out = getResponse().getOutputStream();
20 //写文件
21 int b;
22 while((b=in.read())!= -1)
23 {
24 out.write(b);
25 }
26 in.close();
27 out.close();
28 } catch (Exception e) {
29 e.printStackTrace();
30 }
31 }
32
33 /**
34 * 根据文件后缀名获得对应的MIME类型。
35 *
36 * @param file
37 */
38 private String getMIMEType(File file) {
39 String type = "*/*";
40 String fName = file.getName();
41 // 获取后缀名前的分隔符"."在fName中的位置。
42 int dotIndex = fName.lastIndexOf(".");
43 if (dotIndex < 0) {
44 return type;
45 }
46 /* 获取文件的后缀名 */
47 String end = fName.substring(dotIndex, fName.length()).toLowerCase();
48 if (end == "")
49 return type;
50 // 在MIME和文件类型的匹配表中找到对应的MIME类型。
51 for (int i = 0; i < MIME_MapTable.length; i++) {
52 if (end.equals(MIME_MapTable[i][0]))
53 type = MIME_MapTable[i][1];
54 }
55 return type;
56 }
57
58
59 private final String[][] MIME_MapTable = {
60 // {后缀名, MIME类型}
61 { ".doc", "application/msword" },
62 { ".docx",
63 "application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
64 { ".xls", "application/vnd.ms-excel" },
65 { ".xlsx",
66 "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },
67 { ".pdf", "application/pdf" },
68 { ".ppt", "application/vnd.ms-powerpoint" },
69 { ".pptx",
70 "application/vnd.openxmlformats-officedocument.presentationml.presentation" },
71 { ".txt", "text/plain" }, { ".wps", "application/vnd.ms-works" },
72 { "", "*/*" } };
73
74  

效果:

Chrome

360IE

时间: 2025-01-06 23:12:19

Java 单文件下载及重命名的相关文章

java 的 renameTo方法重命名失败

java 的 renameTo方法重命名文件失败 ,没有异常: 解决方案,应该是重命名之前你在读它 类似如下,先重命名 ,但这个时候你还在读取它,流没有关闭呢. 这个问题很难发现因为,java没有报任何异常

一个Java写的批量重命名文件小程序

今天学了一下java的File操作,然后乘着兴趣,写了一个可以批量处理文件命名的小程序,小程序还有一些不完美的地方,但胜在有趣.比如可以快捷更改你不想让别人看到的文件之类的...限个人使用,造成数据丢失后果自负哟. import java.io.File; import java.sql.Date; import java.util.Scanner; public class RenameTool { boolean useDefaultName = false; boolean useDefa

使用java对文件批量重命名

有时候从网络上下载的电视剧或者动漫,名字上都会被该网站加上前缀或者后缀,如图: 那么处女座的同学就不同意了,不行,我就是想让它按照我的习惯方式命名!但是呢,一个个修改是不是特别麻烦,如果是上百个呢?如果上千个呢?改到手抽筋都改不完啊!闲来没事写了个小程序,用来对这样统一格式的文件进行批量重命名,当然,必须是这种统一格式的命名方式,如上图所显示的那样,废话不多说,直接贴代码,简单易懂,无甚可将! public class CHBRenamer { public static void main(S

java 流 复制,重命名,删除目录

package 流; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class 流 { /** * @param

Java中对文件重命名

File file = new File("D:\\aa\a.txt"); file.renameTo(new File("D:\\aa\\b.txt"));

java 获取文件名(不包括文件的后缀)和文件重命名

获取文件名(不包括后缀) originalFileName.substring(0, originalFileName.lastIndexOf(".")) 文件重命名 public void renameFile(String file, String toFile) { File toBeRenamed = new File(file); //检查要重命名的文件是否存在,是否是文件 if (!toBeRenamed.exists() || toBeRenamed.isDirector

Java用来进行批量文件重命名,批量提取特定类型文件

原因: 因为在网上下载视频教程,有的名字特别长,一般都是机构或者网站的宣传,不方便直接看到视频的简介,所以做了下面的第一个功能. 因为老师发的课件中,文件夹太多,想把docx都放在同一个文件夹下面,一个一个找出来太麻烦,所以做了第二个功能.       最近刚刚学了Java文件和流的知识,所以正好练练手,这也是自己的第一个exe程序,分享一下哈. (导出jar文件,以及用工具exe4j生成exe文件,这部分省略了哈) 用到的知识: 用到Java中文件,流的知识,以及简单的GUI知识. 功能:  

Java本地文件操作(一)文件的创建、删除、重命名

package com.yeqc.testDemo; import java.io.File; public class HelloFile { public static void main(String[] args) { File file = new File("hello.txt"); if (file.exists()) { System.out.println(file.isFile()); System.out.println(file.isDirectory());

巧妙地解决Java文件重命名失败的问题

一.问题描述 1.大家在用log4j时,可能会遇到下面的一个报错信息: Failed to rename [/opt/proj.log] to [/opt/proj.log.2014-03-20]. 这个算是log4j.DailyRollingFileAppender的一个BUG,网上很多修改方案,不过我能搜到的,都不理想. 2.一般性问题:文件重命名失败 详细的内容可以参见论坛的帖子:http://bbs.csdn.net/topics/330195396 关键内容如下: 我也遇到了和LZ相同