文件事务处理

很早就想在系统引入文件事务的概念了,可是自己又没有一个完整的方案。通过上网学习知道了apache的文件事务处理工具,这些天下载下来做了一些例子和使用。

虽然比较简单但是还是分享出来以供需要的人能够快速使用:

引入的包有:

示例代码如下:

public void testConn() throws Exception{
	FileResourceManager frm = null;
	String txId = null;
	try {;
		// 文件最终的存储目录
		String toDir = "g:\\imageroot\\AA";
		// 事务处理的工作目录,当事务运行时会在次目录下建立一个以txId为名字的目录来存放事务处理的文件
		String tempDir = "g:\\imageroot\\workDir";
		// 创建文件操作实例
		frm = new FileResourceManager(toDir, tempDir, false, loggerFacade, true);
		// 启动文件操作实例
		frm.start();
		// 获取文件操作事务句柄
		txId = frm.generatedUniqueTxId();
		// 启动文件操作事务
		frm.startTransaction(txId);
		// 删除文件,1.txt为文件名存储在toDir目录下
		frm.deleteResource(txId, "1.txt");
		// 添加文件,会在workDir/%txId%下创建2.txt文件
		frm.createResource(txId, "2.txt");
		OutputStream thumbNailOut =  frm.writeResource(txId, "2.txt");
		thumbNailOut.write("2".getBytes());
		thumbNailOut.flush();
		thumbNailOut.close();
		
		// 提交事务将workDir/%txId%目录下的文件覆盖到toDir中并且删除%txId%目录
		frm.commitTransaction(txId);
	} catch (Exception e) {
		if(null != txId)
			// 回滚事务,删除%txId%目录
			frm.rollbackTransaction(txId);
		logger.error("事务处理失败!", e);
	}finally{
		if(null != frm)
			// 停止文件操作实例
			frm.stop(FileResourceManager.SHUTDOWN_MODE_NORMAL);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值