FIle类常用工具方法整理(持续更新)
1.递归遍历一个目录,获取所有文件名(也可以取到绝对路径)
public static void traverse(String filePath, List<String> files) {
if (StringUtils.isBlank(filePath)){
return ;
}
try{
File superFile = new File(filePath);
if (superFile.exists()) {
File[] fileList = superFile.listFiles();
if (null != files && fileList.length > 0) {
for (File file : fileList) {
// 还是文件夹
if (file.isDirectory()) {
traverse(file.getAbsolutePath(),files);
} else {
files.add(file.getName()); //文件名
//files.add(file.getAbsolutePath()); //文件绝对路径
}
}
}
}
}catch (Exception e){
//log
}
return ;
}
2.获取文件大小,自动用K、M、G表示。
public static String parseSize(long length){
StringBuilder size = new StringBuilder();
DecimalFormat format = new DecimalFormat("###.0");
if (length < 1024) {
size.append((int) length).append(" B");
}else if (length >= 1024 && length < 1024 * 1024) {
double i = (length / (1024.0));
size.append(format.format(i)).append(" K");
}else if (length >= 1024 * 1024 && length < 1024 * 1024 * 1024) {
double i = (length / (1024.0 * 1024.0));
size.append(format.format(i)).append(" M");
}else if (length >= 1024 * 1024 * 1024) {
double i = (length / (1024.0 * 1024.0 * 1024.0));
size.append(format.format(i)).append(" G");
}
return size.toString();
}
3.Multipart文件转存为本地的File。
public static void multipartToFile(MultipartFile file, String fileFolder){
FileOutputStream outputStream = null;
try {
File newFileFolder = new File(fileFolder);
if (!newFileFolder.exists()) {
newFileFolder.mkdirs();
} fileFolder = newFileFolder.getAbsolutePath() + File.separator + file.getOriginalFilename(); outputStream = new FileOutputStream(new File(fileFolder));
IOUtils.copy(file.getInputStream(), outputStream);
} catch (Exception e) {
// log
} finally {
IOUtils.closeQuietly(outputStream);
}
}
4.清理指定目录下一天前(时间可以指定)的文件。
public static void cleanDirectory(String dir, long ttl) {
File file = new File(dir);
String[] subDirNames = file.list(new FilenameFilter() {
@Override
public boolean accept(File current, String name) {
return new File(current, name).isDirectory();
}
});
if (subDirNames != null) {
for (String name : subDirNames) {
File subDir = new File(dir + File.separator + name);
if (System.currentTimeMillis() - subDir.lastModified() > ttl) {
try {
FileUtils.deleteDirectory(subDir); //import org.apache.commons.io.FileUtils;
} catch (Exception e) {
// log
}
}
}
}
}
5.把字符串存入指定文件。
public static void strToFile(String content, File outFile) {
OutputStream os = null;
try {
File parent = outFile.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
if (!outFile.exists()) {
outFile.createNewFile();
}
os = new FileOutputStream(outFile);
IOUtils.write(content, os);
} catch (Exception e) {
// log
} finally {
IOUtils.closeQuietly(os);
}
}
FIle类常用工具方法整理(持续更新)的更多相关文章
- File类常用的方法与字节流类方法简介
File类常用的方法 获取功能的方法 public String getAbsolutePath() :返回此File的绝对路径名字符串. public String getPath() :将此Fil ...
- JavaScript 深入学习及常用工具方法整理 ---- 01.浮点数
在JavaScript中是不区分整数值和浮点数值的,其中所有的数字均用浮点数值表示.JavaScript采用IEEE 754标准(有兴趣可以浏览网络规范分类下的IEEE 754标准,需要原文件请在留言 ...
- BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js
BAT 前端开发面经 —— 吐血总结 目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...
- iOS:开发常用GitHub开源项目(持续更新)
IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...
- C#File类常用的文件操作方法(创建、移动、删除、复制等)
File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量很多时候都是路径path ...
- 常用js方法整理common.js
项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data ...
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
- 项目中常用js方法整理common.js
抽空把项目中常用js方法整理成了common.js,都是网上搜集而来的,大家一起分享吧. var h = {}; h.get = function (url, data, ok, error) { $ ...
- jQuery常用工具方法
前面的话 jQuery提供一些与元素无关的工具方法,不必选中元素,就可以直接使用这些方法.如果理解原生javascript的继承原理,那么就能理解工具方法的实质.它是定义在jQuery构造函数上的方法 ...
随机推荐
- 【暴力】hdu6121 Build a tree
给你n,K,让你构造出一颗n个结点的完全K叉树,求所有结点子树大小的异或和. 先把n号结点到根的路径提取出来单独计算.然后这条路径把每一层分成了左右两部分,每一层的左侧和其上一层的右侧的结点的子树大小 ...
- 【枚举+贪心】POJ2718-Smallest Difference
[题目大意] 按升序输出几个不同的数字,任意组成两个数字,输出最小的差值. [思路] 虽然是在穷竭搜索的章节里找到的题目,但是我觉得不需要穷竭搜索,枚举一下就可以了,0MS.分为一下三种情况: (1) ...
- 怎么提高DB的效率
主要从4方面,提高db的效率: 1,建立索引:(巴东) 2,多线程: 3,锁的范围(表级,行级...) 4,内存数据库
- 看看如何解决“SQL Server只能使用Windows身份登录,不能使用sa等Sql server身份进行登录”的问题
今天安装Sql Server之后,出现SQL Server只能使用Windows身份登录,不能使用sa等Sql server身份进行登录的问题是由于sql server只设置了Windows身份验证, ...
- 网络数据包分析 网卡Offload
http://blog.nsfocus.net/network-packets-analysis-nic-offload/ 对于网络安全来说,网络传输数据包的捕获和分析是个基础工作,绿盟科技研 ...
- VUE2.0学习总结
摘要: 年后公司项目开始上vue2.0,自己对学习进行了总结,希望对大家有帮助! VUE2.0学习 vue介绍 vue是什么? https://vuefe.cn/guide vue也是一个数据驱动框架 ...
- 【shiro】使用shiro搭建的项目,页面引用js,报错:Uncaught SyntaxError: Unexpected token <
使用shiro搭建项目过程中,总是出现登录页面 登录第一次有效果,登陆第二次出现302状态码,第三次又有效果,第四次又没有效果的局面. 因此,采用ajax提交页面登录的用户名和密码,但是在引用js的过 ...
- Python 学习建议(个人愚见)
前言 本科毕业已经5年+,一直在做iOS开发. 工作方面:从刚入门的小菜鸟码农,后面到BAT里混过两年,到现在带10个人的Team Leader,收入尚可. 生活状态:已婚,儿子刚满1岁,有一定存款, ...
- .NET/MVC-ViewBag、ViewData、TempData区别
1.ViewData ViewData的生命周期和View相同, 只对当前View有效. 2.TempData TempData保存在Session中, Controller每次执行请求的时候会从Se ...
- 这里先发布一个,自己写得unityUI的适配的方案(插播)
这个适配是依据坐标系的象限的思想来进项适配的.參考了部分的NGUI的适配方案. 在程序的事实上,来測量UI距离相机边界的像素然后依据比例来进行适配,个人认为还不错. 放码! . 有个前提哦就是你要先定 ...