zip与流+JAVA7+Files

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import java.nio.file.FileSystem;

import java.nio.file.FileSystems;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.nio.file.StandardOpenOption;

import java.util.ArrayList;

import java.util.Enumeration;

import java.util.zip.ZipEntry;

import java.util.zip.ZipFile;

import java.util.zip.ZipInputStream;

public class Test

{

private static Path path;

private static String fileName;

private static File file;

public static void main(String args[])

{

try

{

downFile();

zipExtractor(path);

}

catch (Exception e)

{

e.printStackTrace();

}

}

private static void downFile() throws Exception

{

URL url = new URL(

"http://121.41.108.144:8080/download/130636083243513137/down07.zip");

fileName = url.getFile();

file = new File(fileName);// down07.zip

fileName = file.getName();

path = Paths.get("C:", fileName);// c:\\down07.zip

file = path.toFile();

URLConnection connection = null;

connection = url.openConnection();

int length = connection.getContentLength();

if (file.exists())

{

System.out.println("zzzz");

}

else

{

OutputStream out = new FileOutputStream(file);

copy(connection.getInputStream(), out, length);

out.close();

}

}

private static void copy(InputStream inputStream, OutputStream out,

int length)

{

byte[] buffer = new byte[length];

BufferedInputStream bi = new BufferedInputStream(inputStream);

BufferedOutputStream bo = new BufferedOutputStream(out);

int count = 0, n = 0;

try

{

while ((n = bi.read(buffer, 0, length)) != -1)

{

out.write(buffer, 0, n);

count += n;

}

out.flush();

}

catch (Exception e)

{

e.printStackTrace();

}

finally

{

try

{

out.close();

}

catch (IOException e)

{

e.printStackTrace();

}

try

{

bi.close();

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

private static boolean zipExtractor(Path path) throws Exception

{

boolean isSuccess = false;

Path newPath = Paths.get("C:", "Users", "zzzzz", "Desktop", "new");

File f = newPath.toFile();

if (f.exists() == false)

{

f.mkdirs();

}

path = Paths.get("C:", "Users", "zzzzz", "Desktop", "down07.zip");

ZipFile zipFile = new ZipFile(path.toString());

ZipInputStream zipInputStream = new ZipInputStream(

Files.newInputStream(path, StandardOpenOption.READ));

ZipEntry entry;

FileSystem fs = FileSystems.newFileSystem(path, null);

Enumeration enumeration = zipFile.entries();

while(enumeration.hasMoreElements())

{

entry =(ZipEntry)enumeration.nextElement();

String sourName = entry.getName();

if(newPath.resolve(sourName).toFile().exists() == false)

{

Files.copy(fs.getPath(sourName), newPath.resolve(sourName));

}

else

{

System.out.println("exist");

}

}

// while ((entry = zipInputStream.getNextEntry()) != null)

// {

// String sourceName = entry.getName();

// if (newPath.resolve(entry.getName()).toFile().exists() == false)

// {

// Files.copy(fs.getPath(sourceName),

// newPath.resolve(entry.getName()));

// }

// else

// {

// System.out.println("exist");

// }

// }

return isSuccess;

}

}

代码比较乱

时间: 2024-10-15 15:14:06

zip与流+JAVA7+Files的相关文章

10缓冲流、转换流、序列化流、Files

十.流 10.1 缓冲流 10.1.1 概述 缓冲流是对4个基本的FileXxx流的增强,所以也是4个流,按照数据类型进行分类 字节缓冲流:BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader,BufferedWriter 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率. 10.1.2 字节缓冲流 构造方法: 构造方法 - public Buffe

Java文件IO操作应该抛弃File拥抱Path和Files

Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem;import java.nio.file.FileSystems;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.attribute.FileAt

java_流

转自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在

13.5. zipfile — Work with ZIP archives

13.5. zipfile — Work with ZIP archives Source code: Lib/zipfile.py The ZIP file format is a common archive and compression standard. This module provides tools to create, read, write, append, and list a ZIP file. Any advanced use of this module will

zip、tar工具的介绍及用法

6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具 直接压缩 格式 zip 1.txt.zip 1.txt //可以看到zip需要先命名文件 [[email protected] tmp]# ls -lh 1.txt    查看文件大小 -rw-r--r--. 1 root root 3.6M 11月 10 21:44 1.txt [[email protected] tmp]# zip 1.txt.zip 1.txt    执行zip命令压缩   addin

java8 函数式编程入门官方文档中文版 java.util.stream 中文版 流处理的相关概念

前言 本文为java.util.stream 包文档的译文 极其个别部分可能为了更好理解,陈述略有改动,与原文几乎一致 原文可参考在线API文档 https://docs.oracle.com/javase/8/docs/api/ Package java.util.stream Description 一些用于支持流上函数式操作的类 ,例如在集合上的map-reduce转换.例如 int sum = widgets.stream() .filter(b -> b.getColor() == R

Genymotion安装apk问题,不能部署Genymotion-ARM-Translation_v1.zip

把Genymotion-ARM-Translation_v1.zip拖进去提示 Files successfully copied to: /sdcard/Download 但还是不能安装apk 解决办法: 直接自己手动flash 这个archive. 1. adb shell 2. cd /sdcard/Download/ 3. sh /system/bin/flash-archive.sh  /sdcard/Download/Genymotion-ARM-Translation_v1.1.z

Java中往zip压缩包追加文件

有个需求,从某个接口下载的一个zip压缩包,往里面添加一个说明文件.搜索了一下,没有找到往zip直接添加文件的方法,最终解决方法是先解压.再压缩. 具体过程如下: 1.一个zip文件的压缩和解压工具类 压缩和解压工具类来自https://www.iteye.com/blog/songfeng-123-2243016,但是原文代码因为用的是Java自带的java.util.zip,有中文乱码的bug,所以需要修改部分代码,并且修改为引用org.apache.tools.zip.*,pom.xml加

《Java核心技术卷二》笔记(二)文件操作和内存映射文件

文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7提供了Path,Paths,Files,FileSystem等类,使文件操作变得简单和全面.此外还有很多第三方库也提供了文件操作的便捷类如common.io中的FileUtils类,Ant api提供的FileSet等类. 1.File类的使用 Java7之前版本中,File类即代表了路径对象也封装