写一个我自己的文件管理工具类

1、判断文件是否存在

2、上传文件
上传文件的核心是file.transferTo(targetFile),该语句将输入的数据流转存到另一目标文件中,因此targetFile必须是实际存在的路径,且包括文件名。也可以先判断文件路径是否存在,如果不存在可以通过mkdir()来创建该路径。

在实际项目中上传文件的路径往往被定义在外部的properties文件内,这样做大概是为了在文件服务器满载的时候可以转存到其他地方,而不用重启项目。

将文件上传到文件服务器上时往往不会以原始的文件名存储,因为这样做可能会被不怀好意的安全人员利用,因此往往是通过加密算法生成唯一标识符来作为文件名,常用UUID算法生成加密后的文件名,该算法利用时间戳,MAC等生成通用唯一标识符,该标识符在同一时空重复的概率基本为零。

上传涉及到的最主要的对象是MultipartFile,它有几个主要的方法分别是:
- getOriginalFilename()获取文件名
- transferTo(targetFile)转存

3、下载文件
下载文件核心是从指定路径读取文件到输入流,再将文件写入输出流。

这里需要被注意的东西是,响应对象的编码,响应对象的文件类型。

在设置报文头的时候response.setHeader("Content-Disposition", "attachment;fileName="+ fileName)这里其实是告诉浏览器收到信息之后要怎么做。

之后其实就是将输入流的数据写进响应对象的输出流就可以了。

4、删除文件,删除文件也是十分简单,就只是调用file的delete方法,唯独要注意的是提交参数的乱码问题。

5、读取文件,读取文件用的是缓存字符串,字符串本身是不可变对象,这里使用缓存字符串会显得合理一些。通过Scanner对象每次读取一行缓存到BufferString对象中。

6、读取文件流,读取文件流相对比较简单,就是通过request对象的输入流,将文件循环读出来,这里要注意的而是缓冲数组的大小,太大会导致程序运行过慢,太小程序循环太久最终与会拖慢程序。

对工具类的学习在这里暂停,当前任务应该优先解决权限框架。

发布了35 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/jiujiuming/article/details/62039813