下载文件操作时,临时文件的处理可能是经常会碰到却又很容易忽略的问题,如果不仔细处理,很容易在服务器上遗留一堆的临时文件。
一般我们可能会这样做(在Struts2下的代码,其它环境也类似):
// 下载文件
try {
stream = new FileInputStream(new File(downloadFile));
FileUtil.deleteFile(downloadFile);
} catch (Exception e) {
log.error("系统错误" + e.getMessage());
throw new Exception(e.getMessage());
}
然而,虽然写了 FileUtil.deleteFile(downloadFile);, 这句话却不能起任何作用,因为前面的Stream没有关闭,无法Delete。
为此,增加了一下函数。
public static InputStream getDownloadFile(String realPath, byte[] fileContents) throws Exception {
// 初始化Stream
InputStream stream = null;
// 判断参数
if (realPath == null && fileContents == null) {
throw new Exception("not found stream Contents");
}
// 处理模式判断
if (realPath != null && !"".equals(realPath)) {
// 文件模式
try {
// 读取文件到二进制中
File readFile = new File(realPath);
FileInputStream fis = new FileInputStream(readFile);
// 读取
byte[] buffer = new byte[(int)readFile.length()];
fis.read(buffer);
// 关闭
fis.close();
stream = new ByteArrayInputStream(buffer);
} catch (FileNotFoundException e) {
throw e;
}
} else {
// 字节数组模式
stream = new ByteArrayInputStream(fileContents);
}
return stream;
}
代码也改为:
// 下载文件
try {
stream = FileUtil.getDownloadFile(downloadFile, null);
FileUtil.deleteFile(downloadFile);
} catch (Exception e) {
log.error("系统错误" + e.getMessage());
throw new Exception(e.getMessage());
}
即可正确的删除临时文件。
分享到:
相关推荐
系统临时文件和IE临时文件是计算机使用过程中不可避免的产物,它们在日常操作中扮演着重要角色,但也可能随着时间的推移占用大量磁盘空间,甚至成为隐私泄露的风险。因此,定期清理这些临时文件是保持系统运行高效且...
创建一个记事本文件,输入`del /f /s /q *~*`命令,然后将文件扩展名为.bat,运行这个批处理文件就能一次性删除所有匹配的临时文件。 5. **设置MapGIS自动清理**:为了避免频繁手动清理,可以在MapGIS的配置选项中...
临时文件的存在在某些情况下是必要的,但在大多数情况下,它们在使用后并没有被及时删除。 清理临时文件的步骤一般包括以下几个方面: 1. **手动清理**:用户可以直接打开系统临时文件夹(如Windows的"C:\Users\...
在C#开发过程中,Visual Studio 2017作为一个强大的集成开发环境(IDE),它会生成大量的临时文件来支持项目的构建、调试和其他功能。这些临时文件包括编译后的中间文件、元数据、符号文件(pdb)以及缓存信息。随着...
【系统临时文件清理器】是一款由个人开发者编写的简易应用程序,旨在帮助用户高效地清理计算机中的系统临时文件,以释放磁盘空间并提高系统运行效率。临时文件通常是由操作系统和其他软件在运行过程中产生的,用于...
这样可以确保不再需要的临时文件、日志文件等不会积累过多,占用宝贵的磁盘空间。 2. **自定义清理目标**:用户可以指定多个文件夹进行清理,如临时文件夹、日志文件夹或任何其他需要定期清理的共享文件夹。这适用...
这对于清理临时文件、日志文件或者清理不再需要的大型项目文件非常实用。特别是当文件数量巨大,例如数万甚至数十万个小文件时,这种工具的优势更为明显。 “特别是一堆小文件需要删除时,非常好用”进一步强调了该...
本文将深入探讨如何清除Delphi 6、7及2010开发过程中的临时文件,以及介绍一个使用C#语言在Visual Studio 2017环境下编写的工具来自动化这一过程。 Delphi是一款强大的RAD(快速应用开发)工具,主要用于创建...
在软件开发过程中,尤其是使用Visual C++(VC)进行编程时,开发者经常会遇到两大问题:一是随着项目的发展,编译过程会产生大量的临时文件,这些文件占据了不少硬盘空间;二是随着VC版本的更新,旧版工程可能需要...
电脑用久了,办公文档、电子书、照片、下载的临时文件等堆满了硬盘,眼看着文件夹越来越庞大,其中的杂乱无章的文件该怎么整理呢?一个一个地移动到规划好的文件夹中?这么多文件,可要整理到什么时候啊?使用Dropit...
使用文件备注功能会在根目录生成一个 8db 文件夹来保存数据不要删除 这个功能看上去简单 但是非常实用 只要使用好此功能 能方便的管理一大堆文件 包括可以注明一些 开发思路 BUG 管理等. //2.62 修复了一堆BUG 增加...
例如,可以优先清理临时文件、系统日志、下载文件夹中的旧文件等。此外,对于大文件,如高清视频或大型游戏,如果不再需要,也可以考虑删除或移动到外部存储设备。 在清理过程中,要特别注意不要误删重要文件。许多...
当写入大文件时,它一次性将所有数据加载到内存中,然后逐行写入。对于小文件,这种方法是可行的,但对于大文件,特别是包含数千行甚至百万行的数据,内存需求可能会超出JXL库和JVM所能提供的限制。 为了解决这个...
1. **临时文件**:QQ在运行时为了快速读取数据会创建临时文件,例如图片预览、聊天记录等,这些文件在使用后通常不会自动删除。 2. **缓存文件**:QQ的聊天记录、表情、主题等都会被缓存在本地,以加快加载速度。但...
- 使用`-Djava.io.tmpdir`指定临时目录,将大文件的临时分解部分存储在磁盘上,而不是内存。 - 使用`-XX:+UseConcMarkSweepGC`开启CMS垃圾回收器,它对处理大对象和长时间存活的对象有更好的效果。 - 考虑使用XML...
扫描完成后,会显示一个列表,包括临时文件、系统日志、Internet缓存等。滚动列表,找到“系统队列中的Windows错误报告文件”这一项。如果你不确定,可以查看旁边的描述,确认它就是我们要删除的错误报告。 5. 在...
然而,在这里遇到了一个问题:在第二轮请求中,临时文件可能已经不存在了。因为默认情况下,PHP会在脚本执行完毕后,自动清理所有上传的临时文件。 为了解决这个问题,开发者可以采取措施,手动移动临时文件到一个...
- SXSSF不保存整个工作簿在内存中,而是将数据写入磁盘的临时文件,只有最近使用的行保留在内存中,其余的被持久化到磁盘。 3. **使用XSSF替代HSSF**: - HSSF是处理.xls文件的API,而XSSF用于处理.xlsx文件。...
确保服务器有足够的堆内存分配,并且可以适当调整`struts.multipart.saveLocation`属性,将上传文件临时存储在硬盘上,而不是内存中。 3. **配置错误** 配置文件中的大小单位错误(如误写成KB而非MB)或配置项拼写...
[client] port = 3306 socket=/home/mysql/data/mysql.sock ...# 如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出 myisam_repair_threads ...