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构造函数上的方法 ...
随机推荐
- 【概率论】hdu5985 Lucky Coins
kill(i,j)表示第i种硬币在第j轮或者之前就死光的概率,它等于(1-pi^j)^num(i) rev(i,j)表示第i种硬币在j轮后仍然存活的概率,它等于1-kill(i,j) 然后对每种硬币i ...
- 【分类讨论】Codeforces Round #407 (Div. 2) D. Weird journey
考虑这个二元组中有一者是自环,则必然合法. 考虑这两条边都不是自环,如果它们不相邻,则不合法,否则合法. 坑的情况是,如果它是一张完整的图+一些离散的点,则会有解,不要因为图不连通,就误判成无解. # ...
- 【容斥原理】【分解质因数】poj1091 跳蚤
题意转化为求一个线性组合a1*x1+a2*x2+...+an*xn+m*xn+1=1在什么时候可以有解.(ai在1~m的范围内任取) 易得当且仅当gcd(a1,a2,...,an)=1时可能有解. 然 ...
- Redis 真得那么好用吗?
不管你是从事Python.Java.Go.PHP.Ruby等等......Redis都应该是一个比较熟悉的中间件.而大部分经常写业务代码的程序员,实际工作中或许只用到了set value.GetVal ...
- Java高级架构师(一)第39节:Nginx的Rewrite模块
- CountDownLatch使用场景及分析 并发测试
原文:https://www.cnblogs.com/bqcoder/p/6089101.html CountDownLatch使用场景及分析 JDk1.5提供了一个非常有用的包,Concurre ...
- 【spring cloud】spring cloud中启动eureka集群时候,发生端口已经绑定的报错The Tomcat connector configured to listen on port 8000 failed to start. The port may already be in use or the connector may be misconfigured.
在分别设置 进行微服务eureka集群启动时候,执行命令行启动jar包时候,报错前面一个端口8000已经被使用,而我这里启动的配置文件中端口号是8001,怎么会导致端口冲突呢?? 但是报错我的端口冲突 ...
- python对于0x01的处理
对于python脚本,可以使用: .replace('\x01', '') 对于vim工具,可以使用: :%s/\%x01/ /g
- XmlRpc with C#/Java【转】
最近看了几个项目都是用xmlrpc协作完成的,就做了几个测试客户端和服务器端和大家一起分享.希望能对入门的同学有帮助 关于xmlrpc的介绍和规范参考http://www.xml-rpc.net/ 下 ...
- python Parent.__init()和super(Child, self)的区别
super函数做的事情 def supper(cls, inst): mro = inst.__class__.mro() return mro[mro.index(cls) + 1] inst生成父 ...