You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2016/05/17 08:44:21 UTC

svn commit: r1744212 - /poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java

Author: centic
Date: Tue May 17 08:44:21 2016
New Revision: 1744212

URL: http://svn.apache.org/viewvc?rev=1744212&view=rev
Log:
BiffViewer: Close resources always

Modified:
    poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java

Modified: poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java?rev=1744212&r1=1744211&r2=1744212&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java Tue May 17 08:44:21 2016
@@ -32,6 +32,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.poi.hssf.record.*;
+import org.apache.poi.hssf.record.RecordFormatException;
 import org.apache.poi.hssf.record.RecordInputStream.LeftoverDataException;
 import org.apache.poi.hssf.record.chart.*;
 import org.apache.poi.hssf.record.pivottable.DataItemRecord;
@@ -43,11 +44,7 @@ import org.apache.poi.hssf.record.pivott
 import org.apache.poi.hssf.record.pivottable.ViewSourceRecord;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
-import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.POILogFactory;
-import org.apache.poi.util.POILogger;
-import org.apache.poi.util.StringUtil;
+import org.apache.poi.util.*;
 
 /**
  *  Utility for reading in BIFF8 records and displaying data from them.
@@ -66,10 +63,10 @@ public final class BiffViewer {
      *
      *@param  is the InputStream from which the records will be obtained
      *@return an array of Records created from the InputStream
-     *@exception  RecordFormatException  on error processing the InputStream
+     *@exception  org.apache.poi.util.RecordFormatException  on error processing the InputStream
      */
     public static Record[] createRecords(InputStream is, PrintWriter ps, BiffRecordListener recListener, boolean dumpInterpretedRecords)
-            throws RecordFormatException {
+            throws org.apache.poi.util.RecordFormatException {
         List<Record> temp = new ArrayList<Record>();
 
         RecordInputStream recStream = new RecordInputStream(is);
@@ -403,25 +400,34 @@ public final class BiffViewer {
 			pw = new PrintWriter(new OutputStreamWriter(System.out, Charset.defaultCharset()));
 		}
 
-		NPOIFSFileSystem fs = new NPOIFSFileSystem(cmdArgs.getFile(), true);
-        InputStream is = getPOIFSInputStream(fs);
-		
-		if (cmdArgs.shouldOutputRawHexOnly()) {
-			int size = is.available();
-			byte[] data = new byte[size];
+        try {
+            NPOIFSFileSystem fs = new NPOIFSFileSystem(cmdArgs.getFile(), true);
+            try {
+                InputStream is = getPOIFSInputStream(fs);
 
-			is.read(data);
-			HexDump.dump(data, 0, System.out, 0);
-		} else {
-			boolean dumpInterpretedRecords = cmdArgs.shouldDumpRecordInterpretations();
-			boolean dumpHex = cmdArgs.shouldDumpBiffHex();
-			boolean zeroAlignHexDump = dumpInterpretedRecords;  // TODO - fix non-zeroAlign
-			runBiffViewer(pw, is, dumpInterpretedRecords, dumpHex, zeroAlignHexDump,
-					cmdArgs.suppressHeader());
-		}
-		is.close();
-        fs.close();
-		pw.close();
+                try {
+                    if (cmdArgs.shouldOutputRawHexOnly()) {
+                        int size = is.available();
+                        byte[] data = new byte[size];
+
+                        is.read(data);
+                        HexDump.dump(data, 0, System.out, 0);
+                    } else {
+                        boolean dumpInterpretedRecords = cmdArgs.shouldDumpRecordInterpretations();
+                        boolean dumpHex = cmdArgs.shouldDumpBiffHex();
+                        boolean zeroAlignHexDump = dumpInterpretedRecords;  // TODO - fix non-zeroAlign
+                        runBiffViewer(pw, is, dumpInterpretedRecords, dumpHex, zeroAlignHexDump,
+                                cmdArgs.suppressHeader());
+                    }
+                } finally {
+                    is.close();
+                }
+            } finally {
+                fs.close();
+            }
+        } finally {
+            pw.close();
+        }
 	}
 
 	protected static InputStream getPOIFSInputStream(NPOIFSFileSystem fs)
@@ -472,7 +478,7 @@ public final class BiffViewer {
 		    return result;
 		}
 		private static String formatRecordDetails(int globalOffset, int sid, int size, int recordCounter) {
-			StringBuffer sb = new StringBuffer(64);
+			StringBuilder sb = new StringBuilder(64);
 			sb.append("Offset=").append(HexDump.intToHex(globalOffset)).append("(").append(globalOffset).append(")");
 			sb.append(" recno=").append(recordCounter);
 			sb.append(  " sid=").append(HexDump.shortToHex(sid));



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org