public void unZipIt(File folder, File zipFile) { // List<File> files = new ArrayList<>(); byte[] buffer = new byte[1024]; try { //create output directory is not exists if (!folder.exists()) { folder.mkdir(); } folder.deleteOnExit(); //get the zip file content ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile)); //get the zipped file list entry ZipEntry ze = zis.getNextEntry(); while (ze != null) { String fileName = ze.getName(); File newFile = new File(folder + File.separator + fileName); newFile.deleteOnExit(); // files.add(newFile); // logger.info("file unzip : " + newFile.getAbsoluteFile()); //create all non exists folders //else you will hit FileNotFoundException for compressed folder new File(newFile.getParent()).mkdirs(); FileOutputStream fos = new FileOutputStream(newFile); int len; while ((len = zis.read(buffer)) > 0) { fos.write(buffer, 0, len); } // files.add(newFile); fos.close(); ze = zis.getNextEntry(); } zis.closeEntry(); zis.close(); } catch (IOException ex) { ex.printStackTrace(); } }
/// <summary> /// Reads the zip stream. /// </summary> /// <param name="jInputStream">The j input stream.</param> /// <param name="callback">The callback.</param> /// <param name="rock">The rock.</param> public static void ReadZipStream(java.io.InputStream jInputStream, CallbackZip callback, object rock) { ZipInputStream zis = null; try { zis = new ZipInputStream(jInputStream); ZipEntry entry; ZipEntryE extendedEntry; while ((entry = zis.getNextEntry()) != null) { extendedEntry = new ZipEntryE(entry); callback(extendedEntry, new ZipEntryInputStream(zis), rock); // Close the entry that we read zis.closeEntry(); } } finally { if (zis != null) { zis.close(); } } }
public void CacheClassBytes(FileInfo jar) { // experimental.. try { Console.WriteLine(".cache: " + jar.FullName); var zip = default(ZipInputStream); zip = new ZipInputStream(new jvm::java.io.FileInputStream(jar.FullName)); var Current = zip.getNextEntry(); while (Current != null) { var Name = Current.getName(); if (Name.EndsWith(".class")) { var TypeName = Name.Substring(0, Name.Length - ".class".Length).Replace("/", "."); if (TypeName.StartsWith("java.")) { // we cannot use ClassLoader to load such class anyhow.. // what we probably would need is a JVM parser now... } else { var Memory = zip.ReadToMemoryStream(); this.ClassBytes[TypeName] = Memory.ToArray(); } } Current = zip.getNextEntry(); } } catch (jvm::csharp.ThrowableException cc) { Console.WriteLine("error @CacheClassBytes: " + cc); throw new InvalidOperationException(); } }
public void LoadFile(string path) { InternalEntries = null; var jar = new FileInfo(path); this.FileName = jar; #region clazzLoader this.clazzLoader = default(InternalURLClassLoader); try { //var filePath = "jar:file://" + jar.FullName + "!/"; // http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html // file:///C:/util/aws-android-sdk-0.2.0/lib/aws-android-sdk-0.2.0-ec2.jar // error @URLClassLoader: java.net.MalformedURLException: unknown protocol: c var url = new jvm::java.io.File(jar.FullName).toURL(); // http://www.javakb.com/Uwe/Forum.aspx/java-programmer/34778/URLClassLoader-ClassNotFoundException // http://www.chinaup.org/docs/reference/java/net/URLClassLoader.html // http://www.docjar.com/html/api/sun/applet/AppletClassLoader.java.html // http://www.docjar.com/html/api/java/net/URLClassLoader.java.html // http://www.docjar.com/html/api/java/security/SecureClassLoader.java.html clazzLoader = new InternalURLClassLoader(new URL[] { url }, null); } catch (jvm::csharp.ThrowableException ex) { Console.WriteLine("error @URLClassLoader: " + ex); throw new InvalidOperationException(); } #endregion //clazzLoader.CacheClassBytes(jar); #region Resolve clazzLoader.Resolve = name => { var f = default(FileInfo); if (this.JavaArchiveResolve != null) { f = this.JavaArchiveResolve(name); //clazzLoader.CacheClassBytes(f); } return f; }; #endregion #region GetDynamicEnumerator this.GetDynamicEnumerator = () => { var zip = default(ZipInputStream); try { zip = new ZipInputStream(new jvm::java.io.FileInputStream(jar.FullName)); } catch { Console.WriteLine("error @ ZipInputStream"); throw new InvalidOperationException(); } return (GetNextEntry) delegate { if (zip == null) return null; var e = default(ZipEntry); try { e = zip.getNextEntry(); } catch { } if (e == null) return null; var n = new Entry { Name = e.getName() }; if (clazzLoader != null) if (n.Name.EndsWith(".class")) { var TypeFullName = n.Name.Substring(0, n.Name.Length - ".class".Length).Replace("/", "."); var NestedTypeName = TypeFullName.SkipUntilLastOrEmpty("$"); var NestedTypeNameStartsWithNumber = NestedTypeName.StartsWithNumber(); if (NestedTypeNameStartsWithNumber) { // we should skip nested types with only numbers // as we might not be able to load them } else { n.TypeFullName = TypeFullName; Console.WriteLine("JavaArchiveReflector.Loadfile.InternalGetType almost set for " + n.TypeFullName); n.InternalGetType = delegate { Console.WriteLine("JavaArchiveReflector.Loadfile.InternalGetType - " + n.TypeFullName); var c = default(jvm::java.lang.Class); try { //Console.WriteLine(".deprecated loadClass: " + n.TypeFullName); c = clazzLoader.loadClass(n.TypeFullName); } catch (jvm::csharp.ThrowableException cc) { Console.WriteLine("** JavaArchiveReflector.Loadfile - error loadClass: " + n.TypeFullName + "; " + cc); //throw new InvalidOperationException(); } // what if we need javax.jms.MessageListener ? if (c == null) { return null; } // cant be more explicit:P return jvm::ScriptCoreLibJava.Extensions.BCLImplementationExtensions.ToType(c); }; } } return n; }; }; #endregion }
public void LoadFile(string path) { InternalEntries = null; var jar = new FileInfo(path); this.FileName = jar; #region clazzLoader this.clazzLoader = default(InternalURLClassLoader); try { //var filePath = "jar:file://" + jar.FullName + "!/"; // http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html // file:///C:/util/aws-android-sdk-0.2.0/lib/aws-android-sdk-0.2.0-ec2.jar // error @URLClassLoader: java.net.MalformedURLException: unknown protocol: c var url = new jvm::java.io.File(jar.FullName).toURL(); // http://www.javakb.com/Uwe/Forum.aspx/java-programmer/34778/URLClassLoader-ClassNotFoundException // http://www.chinaup.org/docs/reference/java/net/URLClassLoader.html // http://www.docjar.com/html/api/sun/applet/AppletClassLoader.java.html // http://www.docjar.com/html/api/java/net/URLClassLoader.java.html // http://www.docjar.com/html/api/java/security/SecureClassLoader.java.html clazzLoader = new InternalURLClassLoader(new URL[] { url }, null); } catch (jvm::csharp.ThrowableException ex) { Console.WriteLine("error @URLClassLoader: " + ex); throw new InvalidOperationException(); } #endregion //clazzLoader.CacheClassBytes(jar); #region Resolve clazzLoader.Resolve = name => { var f = default(FileInfo); if (this.JavaArchiveResolve != null) { f = this.JavaArchiveResolve(name); //clazzLoader.CacheClassBytes(f); } return(f); }; #endregion #region GetDynamicEnumerator this.GetDynamicEnumerator = () => { var zip = default(ZipInputStream); try { zip = new ZipInputStream(new jvm::java.io.FileInputStream(jar.FullName)); } catch { Console.WriteLine("error @ ZipInputStream"); throw new InvalidOperationException(); } return((GetNextEntry) delegate { if (zip == null) { return null; } var e = default(ZipEntry); try { e = zip.getNextEntry(); } catch { } if (e == null) { return null; } var n = new Entry { Name = e.getName() }; if (clazzLoader != null) { if (n.Name.EndsWith(".class")) { var TypeFullName = n.Name.Substring(0, n.Name.Length - ".class".Length).Replace("/", "."); var NestedTypeName = TypeFullName.SkipUntilLastOrEmpty("$"); var NestedTypeNameStartsWithNumber = NestedTypeName.StartsWithNumber(); if (NestedTypeNameStartsWithNumber) { // we should skip nested types with only numbers // as we might not be able to load them } else { n.TypeFullName = TypeFullName; Console.WriteLine("JavaArchiveReflector.Loadfile.InternalGetType almost set for " + n.TypeFullName); n.InternalGetType = delegate { Console.WriteLine("JavaArchiveReflector.Loadfile.InternalGetType - " + n.TypeFullName); var c = default(jvm::java.lang.Class); try { //Console.WriteLine(".deprecated loadClass: " + n.TypeFullName); c = clazzLoader.loadClass(n.TypeFullName); } catch (jvm::csharp.ThrowableException cc) { Console.WriteLine("** JavaArchiveReflector.Loadfile - error loadClass: " + n.TypeFullName + "; " + cc); //throw new InvalidOperationException(); } // what if we need javax.jms.MessageListener ? if (c == null) { return null; } // cant be more explicit:P return jvm::ScriptCoreLibJava.Extensions.BCLImplementationExtensions.ToType(c); }; } } } return n; }); }; #endregion }
/// <summary> /// Load Data into local _data /// </summary> /// <returns>bool type true if success</returns> private bool LoadLOBData() { // Reset _items = new List <MAttachmentEntry>(); // Get binaryData from DB byte[] data = GetBinaryData(); // if no data, then return if (data == null) { return(true); } log.Fine("ZipSize=" + data.Length); if (data.Length == 0) { return(true); } // Old Format - single file //here we store title in zip format //if (!ZIP.Equals(GetTitle())) //{ // _items.Add(new MAttachmentEntry(GetTitle(), data, 1)); // return true; //} // convert byte[] to byte[] data byte[] sdata = ConvertTobyte(data); try { ByteArrayInputStream inBt = new ByteArrayInputStream(sdata); // initialize zip ZipInputStream zip = new ZipInputStream(inBt); // get next entry i.e. 1st entry in zip ZipEntry entry = zip.getNextEntry(); // for every entry in zip while (entry != null) { // get file name string name = entry.getName(); ByteArrayOutputStream outBt = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; int length = zip.read(buffer); while (length != -1) { // get data outBt.write(buffer, 0, length); length = zip.read(buffer); } // byte[] sdataEntry = outBt.toByteArray(); byte[] dataEntry = ConvertToByte(sdataEntry); try { log.Fine(name + " - size=" + dataEntry.Length + " - zip=" + entry.getCompressedSize() + "(" + entry.getSize() + ") " + (entry.getCompressedSize() * 100 / entry.getSize()) + "%"); } catch { } // add the entry into _items list _items.Add(new MAttachmentEntry(name, dataEntry, _items.Count + 1)); // get next entry in zip entry = zip.getNextEntry(); } } catch (Exception ex) { log.Log(Level.SEVERE, "loadLOBData", ex); _items = null; return(false); } return(true); }
public static bool isZip(System.IO.Stream in_Renamed) { try { //UPGRADE_ISSUE: Class 'java.util.zip.ZipInputStream' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipInputStream'" //UPGRADE_ISSUE: Constructor 'java.util.zip.ZipInputStream.ZipInputStream' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipInputStream'" ZipInputStream swcZipInputStream = new ZipInputStream(in_Renamed); //UPGRADE_ISSUE: Method 'java.util.zip.ZipInputStream.getNextEntry' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipInputStream'" swcZipInputStream.getNextEntry(); return true; } catch (System.IO.IOException e) { return false; } }
private static void dumpZip(System.IO.StreamWriter out_Renamed, System.Uri url, System.String outfile) { System.IO.Stream in_Renamed = new System.IO.BufferedStream(System.Net.WebRequest.Create(url).GetResponse().GetResponseStream()); try { //UPGRADE_ISSUE: Class 'java.util.zip.ZipInputStream' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipInputStream'" //UPGRADE_ISSUE: Constructor 'java.util.zip.ZipInputStream.ZipInputStream' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipInputStream'" ZipInputStream zipIn = new ZipInputStream(in_Renamed); //UPGRADE_ISSUE: Class 'java.util.zip.ZipEntry' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipEntry'" //UPGRADE_ISSUE: Method 'java.util.zip.ZipInputStream.getNextEntry' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipInputStream'" ZipEntry zipEntry = zipIn.getNextEntry(); while ((zipEntry != null)) { //UPGRADE_TODO: Class 'java.net.URL' was converted to a 'System.Uri' which does not throw an exception if a URL specifies an unknown protocol. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1132'" //UPGRADE_ISSUE: Method 'java.util.zip.ZipEntry.getName' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipEntry'" System.Uri fileUrl = new System.Uri("jar:" + url.ToString() + "!/" + zipEntry.getName()); if (isSwf(fileUrl)) dumpSwf(out_Renamed, fileUrl, outfile); //UPGRADE_ISSUE: Method 'java.util.zip.ZipInputStream.getNextEntry' was not converted. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1000_javautilzipZipInputStream'" zipEntry = zipIn.getNextEntry(); } } finally { in_Renamed.Close(); } }
public JavaArchiveReflector(FileInfo jar) { this.FileName = jar; var clazzLoader = default(URLClassLoader); try { var filePath = "jar:file://" + jar.FullName + "!/"; var url = new java.io.File(filePath).toURL(); clazzLoader = new URLClassLoader(new URL[] { url }); } catch { } this.GetDynamicEnumerator = () => { var zip = default(ZipInputStream); try { zip = new ZipInputStream(new FileInputStream(jar.FullName)); } catch { } return((GetNextEntry) delegate { if (zip == null) { return null; } var e = default(ZipEntry); try { e = zip.getNextEntry(); } catch { } if (e == null) { return null; } var n = new Entry { Name = e.getName() }; if (clazzLoader != null) { if (n.Name.EndsWith(".class")) { n.TypeFullName = n.Name.Substring(0, n.Name.Length - ".class".Length).Replace("/", "."); n.InternalGetType = delegate { var c = default(java.lang.Class); try { c = clazzLoader.loadClass(n.TypeFullName.Replace(".", "/")); } catch (csharp.ThrowableException cc) { System.Console.WriteLine("error: " + cc); } return c.ToType(); }; } } return n; }); }; }