文件加锁:

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

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

    List<SqlParameter> parameters = new List<SqlParameter>(); SqlParameter param; foreach (. ...

  2. dom4j读写XML文件

    XML文件格式: <?xml version="1.0" encoding="UTF-8"?> <company> <employ ...

  3. NEON简介【转】

    转自:http://blog.csdn.net/fengbingchun/article/details/38020265 版权声明:本文为博主原创文章,未经博主允许不得转载. “ARM Advanc ...

  4. MEANIO

    sudo npm install -g bower sudo npm install -g meanio sudo bower cache clean --allow-root sudo mean i ...

  5. [转]Using the Group Pane to Repeat Page Titles

    转自:http://www.wiseowl.co.uk/blog/s148/group-pane-advanced-mode.htm Repeating Page Headers in Reporti ...

  6. rsync增量传输大文件优化技巧

    问题 rsync用来同步数据非常的好用,特别是增量同步.但是有一种情况如果不增加特定的参数就不是很好用了.比如你要同步多个几十个G的文件,然后网络突然断开了一下,这时候你重新启动增量同步.但是发现等了 ...

  7. C#:使用Hashtable实现输出那些用户发表主题最多的信息

    构思:先计算各自的数量,那些数量最多,输出详细信息 具体算法如下: public class Count { #region 计算各实体数量 public static Hashtable Entit ...

  8. bootstrap 列表 表格 表单 复选 单选 多选 输入框组

    一.列表 ul li 二.表格 table  (http://www.runoob.com/bootstrap/bootstrap-tables.html) 1. 基本表格 <table cla ...

  9. shareSDK集成步骤

    按下面目录结构吧sdk的目录文件拷贝到自己的工程中 针对各个平台的分享格式,整理成了一个工具类,不同的平台分享的参数http://wiki.mob.com/不同平台分享内容的详细说明/ package ...

  10. python函数应用

    函数 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编 ...