[vassalengine-svn] SF.net SVN: vassalengine:[7833] VASSAL-src/trunk/src/VASSAL/tools/io/ ZipArchive
Brought to you by:
rodneykinney,
uckelman
From: <uck...@us...> - 2011-09-25 18:29:03
|
Revision: 7833 http://vassalengine.svn.sourceforge.net/vassalengine/?rev=7833&view=rev Author: uckelman Date: 2011-09-25 18:28:57 +0000 (Sun, 25 Sep 2011) Log Message: ----------- Further disentangling of flush() and close(). Modified Paths: -------------- VASSAL-src/trunk/src/VASSAL/tools/io/ZipArchive.java Modified: VASSAL-src/trunk/src/VASSAL/tools/io/ZipArchive.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/io/ZipArchive.java 2011-09-25 12:51:04 UTC (rev 7832) +++ VASSAL-src/trunk/src/VASSAL/tools/io/ZipArchive.java 2011-09-25 18:28:57 UTC (rev 7833) @@ -350,7 +350,9 @@ public void revert() throws IOException { w.lock(); try { - if (!modified) return; + if (!modified) { + return; + } // delete all temporary files for (String name : entries.keySet()) { @@ -371,7 +373,9 @@ public void flush() throws IOException { w.lock(); try { - writeToDisk(); + if (modified) { + writeToDisk(); + } } finally { w.unlock(); @@ -379,14 +383,33 @@ } /** {@inheritDoc} */ - public void close() throws IOException { flush(); } + public void close() throws IOException { + w.lock(); + try { + if (closed) { + return; + } + else if (modified) { + writeToDisk(); + } + else if (zipFile != null) { + zipFile.close(); + zipFile = null; + closed = true; + entries.clear(); + } + } + finally { + w.unlock(); + } + } + private void writeToDisk() throws IOException { - if (!modified || closed) return; - // write all files to a temporary zip archive final File tmpFile = File.createTempFile("tmp", ".zip", archiveFile.getParentFile()); + ZipOutputStream out = null; try { out = new ZipOutputStream( @@ -610,7 +633,9 @@ @Override public void close() throws IOException { - if (closed) return; + if (closed) { + return; + } try { super.close(); @@ -659,7 +684,9 @@ @Override public void close() throws IOException { - if (closed) return; + if (closed) { + return; + } try { super.close(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |