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 ...
随机推荐
- SqlParameter
List<SqlParameter> parameters = new List<SqlParameter>(); SqlParameter param; foreach (. ...
- dom4j读写XML文件
XML文件格式: <?xml version="1.0" encoding="UTF-8"?> <company> <employ ...
- NEON简介【转】
转自:http://blog.csdn.net/fengbingchun/article/details/38020265 版权声明:本文为博主原创文章,未经博主允许不得转载. “ARM Advanc ...
- MEANIO
sudo npm install -g bower sudo npm install -g meanio sudo bower cache clean --allow-root sudo mean i ...
- [转]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 ...
- rsync增量传输大文件优化技巧
问题 rsync用来同步数据非常的好用,特别是增量同步.但是有一种情况如果不增加特定的参数就不是很好用了.比如你要同步多个几十个G的文件,然后网络突然断开了一下,这时候你重新启动增量同步.但是发现等了 ...
- C#:使用Hashtable实现输出那些用户发表主题最多的信息
构思:先计算各自的数量,那些数量最多,输出详细信息 具体算法如下: public class Count { #region 计算各实体数量 public static Hashtable Entit ...
- bootstrap 列表 表格 表单 复选 单选 多选 输入框组
一.列表 ul li 二.表格 table (http://www.runoob.com/bootstrap/bootstrap-tables.html) 1. 基本表格 <table cla ...
- shareSDK集成步骤
按下面目录结构吧sdk的目录文件拷贝到自己的工程中 针对各个平台的分享格式,整理成了一个工具类,不同的平台分享的参数http://wiki.mob.com/不同平台分享内容的详细说明/ package ...
- python函数应用
函数 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编 ...