Mercurial Hosting > luan
changeset 747:d3a1e9a48a94
add unzip
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 14 Jul 2016 20:03:01 -0600 |
parents | 293c397e8dee |
children | de2418d11786 |
files | core/src/luan/modules/IoLuan.java |
diffstat | 1 files changed, 20 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
diff -r 293c397e8dee -r d3a1e9a48a94 core/src/luan/modules/IoLuan.java --- a/core/src/luan/modules/IoLuan.java Thu Jul 14 19:36:02 2016 -0600 +++ b/core/src/luan/modules/IoLuan.java Thu Jul 14 20:03:01 2016 -0600 @@ -31,8 +31,9 @@ import java.net.UnknownHostException; import java.util.Enumeration; import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; -import java.util.zip.ZipEntry; import luan.Luan; import luan.LuanState; import luan.LuanTable; @@ -211,6 +212,21 @@ } } + public void unzip(String path) throws IOException, LuanException { + ZipInputStream in = new ZipInputStream(new BufferedInputStream(inputStream())); + ZipEntry entry; + while( (entry = in.getNextEntry()) != null ) { + if( entry.isDirectory() ) + continue; + File file = new File(path,entry.getName()); + file.getParentFile().mkdirs(); + OutputStream out = new FileOutputStream(file); + Utils.copyAll(in,out); + out.close(); + } + in.close(); + } + public LuanTable table() { LuanTable tbl = new LuanTable(); try { @@ -236,6 +252,9 @@ tbl.rawPut( "exists", new LuanJavaFunction( LuanIn.class.getMethod( "exists" ), this ) ); + tbl.rawPut( "unzip", new LuanJavaFunction( + LuanIn.class.getMethod( "unzip", String.class ), this + ) ); } catch(NoSuchMethodException e) { throw new RuntimeException(e); }