Java I/O 文件加锁,压缩
文件加锁:
文件加锁机制允许我们同步访问某个作为共享资源的文件。
public class Test {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("test.txt");
/*
* 通过tryLock 或者 lock 获得整个文件的FileLock
* tryLock(position, size, shared) 对文件进行部分加锁
*/
FileLock fileLock = fos.getChannel().tryLock();
if (fileLock != null) {
System.out.println("Locked file...");
try {
TimeUnit.MILLISECONDS.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fileLock.release();
System.out.println("Realased Lock ...");
}
}
}
文件压缩:
GZIP进行简单的压缩解压:
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new FileReader("/home/estar/Test/a.java"));
BufferedOutputStream bos = new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream("test.gz",true)));
System.out.println("GZIP 压缩写入文件 。。。");
String s;
while ((s = in.readLine()) != null) {
s += "\n";
bos.write(s.getBytes());
}
in.close(); bos.close();
//InputStreamReader 起到了在字节流与字符流转换的桥梁。。。
System.out.println("GZIP 解压读取文件。。。。");
BufferedReader br = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream("test.gz"))));
while ((s = br.readLine()) != null) {
System.out.println(s);
}
}
}
输出:
GZIP 压缩写入文件 。。。
GZIP 解压读取文件。。。。
AAHJKHJKAAHJKHJKAAHJKHJKnixingAAHJKHJKAAHJKHJKAAHJKHJKnixingAAHJKHJKAAHJKHJK
AAHJKHJKnixing
AAHJKHJKAAHJKHJK
AAHJKHJKnixing
AAHJKHJKAAHJKHJK
AAHJKHJKnixing
AAHJKHJKAAHJKHJK
AAHJKHJKnixing
ZIP进行多文件保存:
public class Test {
//这里保存要压缩的文件路径
public static String[] path = {"/home/estar/Test/a.java","/home/estar/Test/b.java","/home/estar/cbian/yyy/main.cpp"};
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("test.zip");
CheckedOutputStream cos = new CheckedOutputStream(fos, new Adler32());
ZipOutputStream zos = new ZipOutputStream(cos);
BufferedOutputStream bos = new BufferedOutputStream(zos);
for (String p : path) {
//通过ZipEntry 将要压缩的文件的写入压缩文件test.zip
zos.putNextEntry(new ZipEntry(p));
//读出每个要压缩的文件的信息,
BufferedReader br = new BufferedReader(new FileReader(p));
String s;
while ((s = br.readLine()) != null) {
System.out.println("from " + p + "content : " + s);
s += "\n";
bos.write(s.getBytes());
}
br.close();
bos.flush();
}
bos.close();
System.out.println("Checksum : " + cos.getChecksum().getValue());
//读压缩文件
System.out.println("Reading file");
FileInputStream fis = new FileInputStream("test.zip");
CheckedInputStream cis = new CheckedInputStream(fis, new Adler32());
ZipInputStream zis = new ZipInputStream(cis);
BufferedReader br = new BufferedReader(new InputStreamReader(zis));
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null) {
System.out.println("reading ze : " + ze);
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
}
System.out.println("Checksum : " + cis.getChecksum().getValue());
ZipFile zf = new ZipFile("test.zip");
Enumeration e = zf.entries();
while (e.hasMoreElements()){
ZipEntry ze1 = (ZipEntry)e.nextElement();
System.out.println("ze1 : " + ze1);
}
}
}
Java编程思想P566
Java I/O 文件加锁,压缩的更多相关文章
- java对 zip文件的压缩和解压(ant解决中文乱码)
说明: 1.对于压缩的文件,当文件名称是中文时,若使用JDK API中自带的类(java.util.zip.ZipEntry; java.util.zip.ZipOutputStream;)进行压缩, ...
- Java学习笔记之I/O流(读取压缩文件以及压缩文件)
1.读取压缩文件:ZipInputStream 借助ZipFile类的getInputStream方法得到压缩文件的指定项的内容,然后传递给InputStreamReader类的构造方法,返回给Buf ...
- java zip4j 内存文件和磁盘文件 压缩和加密
经常服务器需要对文件进行压缩,网络上流传较多的是从磁盘文件中来压缩成zip文件.但是常常服务器的文件存放在内存中,以byte[]形式存储在内存中.这个时候就不能使用网络上流传的常用方法了,这里就需要对 ...
- java对文件加锁
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt208 在对文件操作过程中,有时候需要对文件进行加锁操作,防止其他线程访问该文 ...
- Java /C# 实现文件压缩
纯粹为了记录. 参考了 https://www.cnblogs.com/zeng1994/p/7862288.html import java.util.List; import java.util. ...
- Java实现将文件或者文件夹压缩成zip
最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类. 这个工具类的功能为: ( ...
- Java知多少(73)文件的压缩处理
Java.util.zip 包中提供了可对文件的压缩和解压缩进行处理的类,它们继承自字节流类OutputSteam 和 InputStream.其中 GZIPOutputStream 和 ZipOut ...
- Java读取文件加锁代码Demo(利用Java的NIO)
本博文部分转载于:http://blog.csdn.net/wangbaochu/article/details/48546717 Java 提供了文件锁FileLock类,利用这个类可以控制不同程序 ...
- java实现将文件压缩成zip格式
以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...
随机推荐
- Android应用插件式开发解决方法
转自:http://blog.csdn.net/arui319/article/details/8109650 一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来 ...
- HDU 4405:Aeroplane chess(概率DP入门)
http://acm.split.hdu.edu.cn/showproblem.php?pid=4405 Aeroplane chess Problem Description Hzz loves ...
- C++ 关键字 explicit, export, mutable
转自 explicit 如果A类有某个构造函数的单个输入参数,是B类(包括基本数据类型)的对象或引用,则C++的编译器会在需要A类形参的函数调用中,自动调用该构造函数,将B类实参隐式地转换为A类实参. ...
- CSS3 功能
1. CSS3在css2的基础上增加了很多功能,ie8以下的浏览器有可能不支持某些属性,增加了很多圆角.渐变.旋转.阴影等效果 2. 文本修饰 text-decoration 属性用来设置或删除文 ...
- Linux软件的安装与卸载
configure作用:是源码安装软件时配置环境用的 他根据你的配置选项和你的系统情况生成makefile文件 为make 做准备 最常用的参数: ./configure --prefix 作用: 不 ...
- Android App 开发常用的xUtils框架
最近搜了一些框架供初学者学习,比较了一下XUtils是目前git上比较活跃 功能比较完善的一个框架,是基于afinal开发的,比afinal稳定性提高了不少,下面是介绍: 鉴于大家的热情,我又写了 ...
- Who's in the Middle 分类: POJ 2015-06-12 19:45 11人阅读 评论(0) 收藏
Who's in the Middle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34155 Accepted: 1 ...
- 单链表操作B 分类: 链表 2015-06-07 12:42 15人阅读 评论(0) 收藏
数据结构上机测试2-2:单链表操作B TimeLimit: 1000ms Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除 ...
- OracleHelper 动软生成
using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...
- linux文件描述符--转载
转自:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录 ...