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 ...
随机推荐
- 华硕本本重装系统后出现can not open file c:\RECOVERY.DAT
华硕本本重装系统后出现can not open file c:\RECOVERY.DAT很多网友会觉得困惑,不知道为什么会这样,下面我就为大家来解决这个问题,方法一: 这个问题就出在华硕自带系统都是装 ...
- oracle sql获取随机数
SQL> select round(dbms_random.value(10000,99999)) num from dual;
- Recovery with Incremental Backups
During media recovery, RMAN examines the restored files to determine whether it can recover them wit ...
- PHP处理CSV表格文件的常用操作方法是怎么样呢
php来说,fgetcsv读入csv表格,返回一个数组,然后foreach输出成HTML的<table>,这步操作几行代码就能实现,非常简单.工作量主要还在于浏览器前端,建议你用jQuer ...
- Stars(树状数组或线段树)
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37323 Accepted: 16278 Description A ...
- 山东理工大学第七届ACM校赛-飞花的鱼塘 分类: 比赛 2015-06-26 10:30 43人阅读 评论(0) 收藏
飞花的鱼塘 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 一日,飞花壕在稷下湖游玩,忽然,飞花巨有了一个养鱼的想法,于是,他大手 ...
- 使用sql创建表并添加注释
Create table T_ErrorLogTable_tb ( ELTID int identity(1,1) primary key,--编号 ELTTime date,--错误发生日期 ELT ...
- 通过PowerShell查询本机IP地址
脚本内容如下: Write-Host "本机IP地址为:"(ipconfig|findstr "IPv4")[1].split(":")[1 ...
- Mysql-学习笔记(==》连接查询_高级查询五)
CREATE TABLE t( tid INT UNSIGNED NOT NULL AUTO_INCREMENT, tname VARCHAR(30), PRIMARY KEY (tid))ENGIN ...
- 2016年11月4日 星期五 --出埃及记 Exodus 19:20
2016年11月4日 星期五 --出埃及记 Exodus 19:20 The LORD descended to the top of Mount Sinai and called Moses to ...