博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java I/O 文件加锁,压缩
阅读量:6172 次
发布时间:2019-06-21

本文共 3225 字,大约阅读时间需要 10 分钟。

文件加锁:

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

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 解压读取文件。。。。AAHJKHJKAAHJKHJKAAHJKHJKnixingAAHJKHJKAAHJKHJKAAHJKHJKnixingAAHJKHJKAAHJKHJKAAHJKHJKnixingAAHJKHJKAAHJKHJKAAHJKHJKnixingAAHJKHJKAAHJKHJKAAHJKHJKnixingAAHJKHJKAAHJKHJKAAHJKHJKnixing

  

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

转载地址:http://elvba.baihongyu.com/

你可能感兴趣的文章
宇宙风暴?才怪!瑞典暗指俄罗斯黑客攻击航空控制系统
查看>>
系统进程管理工具Process Explorer
查看>>
富士通仍执着SPARC架构芯片 将坚持推新
查看>>
易宪容:企业要利用大数据挖掘潜在需求
查看>>
微软声称Win10周年更新为Edge浏览器带来更好电池寿命
查看>>
混合云是企业IT的未来吗?
查看>>
LINE在日本取得成功 但全球化之路还很长
查看>>
红帽云套件新增QuickStart Cloud Installer,加快私有云部署
查看>>
MapXtreme 2005 学习心得 一些问题(八)
查看>>
流量精细化运营时代,营销SaaS之使命——流量掘金
查看>>
雅虎同意出售核心资产
查看>>
Win10大丰收的节奏 微软收编iOS全部150万应用
查看>>
智慧城市要除“城市病” 中兴通讯开辟新增长极
查看>>
Opera已确认解散iOS开发团队
查看>>
DevOps:新的业务浪潮
查看>>
CERT:启用EMET的Windows 7比Windows 10更加安全
查看>>
LINE上市:一场迟到、勇敢又无奈的IPO
查看>>
OA选型:OA系统工作流是核心
查看>>
如何发现“利用DNS放大攻击”的服务器
查看>>
《Arduino开发实战指南:LabVIEW卷》——第2章 Arduino软件
查看>>