文件加锁:

文件加锁机制允许我们同步访问某个作为共享资源的文件。

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 文件加锁,压缩的更多相关文章

  1. java对 zip文件的压缩和解压(ant解决中文乱码)

    说明: 1.对于压缩的文件,当文件名称是中文时,若使用JDK API中自带的类(java.util.zip.ZipEntry; java.util.zip.ZipOutputStream;)进行压缩, ...

  2. Java学习笔记之I/O流(读取压缩文件以及压缩文件)

    1.读取压缩文件:ZipInputStream 借助ZipFile类的getInputStream方法得到压缩文件的指定项的内容,然后传递给InputStreamReader类的构造方法,返回给Buf ...

  3. java zip4j 内存文件和磁盘文件 压缩和加密

    经常服务器需要对文件进行压缩,网络上流传较多的是从磁盘文件中来压缩成zip文件.但是常常服务器的文件存放在内存中,以byte[]形式存储在内存中.这个时候就不能使用网络上流传的常用方法了,这里就需要对 ...

  4. java对文件加锁

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt208 在对文件操作过程中,有时候需要对文件进行加锁操作,防止其他线程访问该文 ...

  5. Java /C# 实现文件压缩

    纯粹为了记录. 参考了 https://www.cnblogs.com/zeng1994/p/7862288.html import java.util.List; import java.util. ...

  6. Java实现将文件或者文件夹压缩成zip

            最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类.         这个工具类的功能为: ( ...

  7. Java知多少(73)文件的压缩处理

    Java.util.zip 包中提供了可对文件的压缩和解压缩进行处理的类,它们继承自字节流类OutputSteam 和 InputStream.其中 GZIPOutputStream 和 ZipOut ...

  8. Java读取文件加锁代码Demo(利用Java的NIO)

    本博文部分转载于:http://blog.csdn.net/wangbaochu/article/details/48546717 Java 提供了文件锁FileLock类,利用这个类可以控制不同程序 ...

  9. java实现将文件压缩成zip格式

    以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...

随机推荐

  1. 华硕本本重装系统后出现can not open file c:\RECOVERY.DAT

    华硕本本重装系统后出现can not open file c:\RECOVERY.DAT很多网友会觉得困惑,不知道为什么会这样,下面我就为大家来解决这个问题,方法一: 这个问题就出在华硕自带系统都是装 ...

  2. oracle sql获取随机数

    SQL> select round(dbms_random.value(10000,99999)) num from dual;

  3. Recovery with Incremental Backups

    During media recovery, RMAN examines the restored files to determine whether it can recover them wit ...

  4. PHP处理CSV表格文件的常用操作方法是怎么样呢

    php来说,fgetcsv读入csv表格,返回一个数组,然后foreach输出成HTML的<table>,这步操作几行代码就能实现,非常简单.工作量主要还在于浏览器前端,建议你用jQuer ...

  5. Stars(树状数组或线段树)

    Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37323 Accepted: 16278 Description A ...

  6. 山东理工大学第七届ACM校赛-飞花的鱼塘 分类: 比赛 2015-06-26 10:30 43人阅读 评论(0) 收藏

    飞花的鱼塘 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 一日,飞花壕在稷下湖游玩,忽然,飞花巨有了一个养鱼的想法,于是,他大手 ...

  7. 使用sql创建表并添加注释

    Create table T_ErrorLogTable_tb ( ELTID int identity(1,1) primary key,--编号 ELTTime date,--错误发生日期 ELT ...

  8. 通过PowerShell查询本机IP地址

    脚本内容如下: Write-Host "本机IP地址为:"(ipconfig|findstr "IPv4")[1].split(":")[1 ...

  9. Mysql-学习笔记(==》连接查询_高级查询五)

    CREATE TABLE t( tid INT UNSIGNED NOT NULL AUTO_INCREMENT, tname VARCHAR(30), PRIMARY KEY (tid))ENGIN ...

  10. 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 ...