java 批量存储_java I/O 批量插入保存文件
[java]代码库package cq.price;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class ConcurrentTotalFileSize {
public static void main(String[] args) throws InterruptedException,
ExecutionException, TimeoutException {
long start = System.nanoTime();
System.out.println("Total Size: "
+ new ConcurrentTotalFileSize()
.getTotalFileSizeOfFilesInDir(new File("F:\\资料")));
System.out.println("Time: " + (System.nanoTime() - start)
/ 1.0e9);
}
public long getTotalFileSizeOfFilesInDir(final File file)
throws InterruptedException, ExecutionException, TimeoutException {
if (file.isFile()) {
return file.length();
}
ExecutorService service = Executors.newFixedThreadPool(4);
long total;
try {
total = 0;
List directories = new ArrayList();
directories.add(file);
while (!directories.isEmpty()) {
final List> partialResults = new ArrayList>();
for (final File direcotry : directories) {
partialResults.add(service
.submit(new Callable() {
@Override
public SubDirectoriesAndSize call()
throws Exception {
return getTotalAndSubDirectories(direcotry);
}
}));
}
directories.clear();
for (Future future : partialResults) {
SubDirectoriesAndSize directoriesAndSize = future.get(100,
TimeUnit.SECONDS);
if (directoriesAndSize == null) {
continue;
}
total += directoriesAndSize.size;
directories.addAll(directoriesAndSize.subDirectories);
}
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage(), e);
} finally {
service.shutdown();
}
return total;
}
public SubDirectoriesAndSize getTotalAndSubDirectories(final File file) {
long total = 0;
List subDirectories = new ArrayList();
if (file.isDirectory()) {
File[] children = file.listFiles();
if (children != null) {
for (File child : children) {
if (child.isFile()) {
total += child.length();
} else {
subDirectories.add(child);
}
}
}
}
return new SubDirectoriesAndSize(total, subDirectories);
}
}
/**
* 记录当初文件夹的下文件的大小以及子文件夹
*
* @author Administrator
*
*/
class SubDirectoriesAndSize {
final public long size;
final public List subDirectories;
public SubDirectoriesAndSize(long size, List subDirectories) {
super();
this.size = size;
this.subDirectories = subDirectories;
};
}
//源代码片段来自云代码http://yuncode.net
java 批量存储_java I/O 批量插入保存文件相关推荐
- 怎么向java窗口中插入XSL表_Java向word中插入Excel文件对象
前言: 在word文件中,虽然也有表格.但是有时我们想要将Excel中表格的大量数据直接插入到word文档中,这就需要用到word的插入对象的功能,也就是直接将Excel文件当做对象插入到word中. ...
- java gzip压缩_Java GZIP示例–压缩和解压缩文件
java gzip压缩 Welcome to Java GZIP example. GZIP is one of the favorite tool to compress file in Unix ...
- java图片批量添加_java实现邮件中插入批量图片
首先是MimeMessage这个类,继承于javax.mail.Message,底下还有IMAPMessage.POP3Message.SmartMimeMessage.SMTPMessage等实现, ...
- java 打文件传输超时_java I/O 一次批量插入保存文件,导致超时问题?
可以用ExecutorService 这个类,下面是一个用线程池时候下计算文件夹大小的例子,可以参考下 package cq.price; import java.io.File; import ja ...
- java jdbc 批量更新_java – JDBC PreparedStatement,批量更新和生成的密钥
我在批处理中使用jdbc preparedStatement并尝试获取由此创建的生成密钥时出现问题. 代码 : PreparedStatement stmt = null; ... connectio ...
- java 批量删除_java根据id批量删除
1.mapper.xml 传入的参数可以是List也可以是Array数组,ParameterType都写List就可以collection="array"也可以写成collecti ...
- java 字节批量拷贝_Java基础回顾 : 利用字节流实现文件的拷贝
本文是一个范例 : 利用字节流实现文件的拷贝 package example; /** * 文件的拷贝. */ import java.io.File; import java.io.FileInpu ...
- java mongodb批量更新_java中mongoTemplate批量更新
方法:mongoTemplate.getDb().getCollection(tableName).bulkWrite(requests); public BulkWriteResult bulkWr ...
- java 常量存储_JAVA 存储空间 寄存器 堆栈 堆 常量存储 非RAM存储
1.寄存器 这是最快的存储区,因为它位于处理器内部,数量极其有限,所以寄存器根据需求进行分配,你不能直接控制,也不能在程序中感 觉到寄存器存在的任何迹象. 2.堆栈 位于通用RAM(随机访问存储器)中 ...
最新文章
- window与共享文件夹访问相关的四个服务
- virtuoso根据原理图绘制版图并联接_版图绘制及Virtuoso软件工具使用.ppt
- 移动**21*设置无法接通_电话打得出去,但别人打你的电话提示用户无法接通,是怎么回事?...
- VTK:结构化网格之StructuredGridOutline
- Python项目打包发布到pypi
- QLocalServer和QLocalSocket单进程和进程通信
- 数学--数论--数论定理--欧拉定理
- zip4j实现多线程压缩
- 数据结构——堆的C语言实现
- c语言静态变量存在堆还是栈,c 类 static 函数 什么样是静态变量?嵌入式C语言的堆栈管理如何实现...
- 转载:GCC 提供的原子操作
- java 圆形碰撞箱_你会使用“碰撞箱”吗?5种你不知道的玩法 甚至能定位死亡方位...
- 计算机资格考试中级工程师种类,中级工程师职称考试类别及注意事项
- .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
- Java属性文件– java.util.Properties
- 条码扫描二维码扫描—ZXing android 改进版本
- 浙江大学公共管理学院与阿里云计算有限公司达成合作 | 凌云时刻
- iptables: No config file解决方法
- 用ftp上传服务器文件大小,ftp服务器上传文件大小
- shiro的受权管理