From 2806d9849b14de831e43a0f319f571449419515e Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 21 Aug 2013 14:00:36 -0400
Subject: [PATCH] Merge pull request #115 from fzs/fu-close-finally

---
 src/main/java/com/gitblit/utils/FileUtils.java |   46 ++++++++++++++++++++++++++++++++++++----------
 1 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/gitblit/utils/FileUtils.java b/src/main/java/com/gitblit/utils/FileUtils.java
index a21b512..fb3e09c 100644
--- a/src/main/java/com/gitblit/utils/FileUtils.java
+++ b/src/main/java/com/gitblit/utils/FileUtils.java
@@ -108,13 +108,22 @@
 	 */
 	public static byte [] readContent(File file) {
 		byte [] buffer = new byte[(int) file.length()];
+		BufferedInputStream is = null;
 		try {
-			BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
+			is = new BufferedInputStream(new FileInputStream(file));
 			is.read(buffer,  0,  buffer.length);
-			is.close();
 		} catch (Throwable t) {
 			System.err.println("Failed to read byte content of " + file.getAbsolutePath());
 			t.printStackTrace();
+		} finally {
+			if (is != null) {
+				try {
+					is.close();
+				} catch (IOException ioe) {
+					System.err.println("Failed to close file " + file.getAbsolutePath());
+					ioe.printStackTrace();
+				}
+			}
 		}
 		return buffer;
 	}
@@ -128,9 +137,9 @@
 	 */
 	public static String readContent(File file, String lineEnding) {
 		StringBuilder sb = new StringBuilder();
+		InputStreamReader is = null;
 		try {
-			InputStreamReader is = new InputStreamReader(new FileInputStream(file),
-					Charset.forName("UTF-8"));
+			is = new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8"));
 			BufferedReader reader = new BufferedReader(is);
 			String line = null;
 			while ((line = reader.readLine()) != null) {
@@ -139,10 +148,18 @@
 					sb.append(lineEnding);
 				}
 			}
-			reader.close();
 		} catch (Throwable t) {
 			System.err.println("Failed to read content of " + file.getAbsolutePath());
 			t.printStackTrace();
+		} finally {
+			if (is != null) {
+				try {
+					is.close();
+				} catch (IOException ioe) {
+					System.err.println("Failed to close file " + file.getAbsolutePath());
+					ioe.printStackTrace();
+				}
+			}
 		}
 		return sb.toString();
 	}
@@ -154,15 +171,24 @@
 	 * @param content
 	 */
 	public static void writeContent(File file, String content) {
+		OutputStreamWriter os = null;
 		try {
-			OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file),
-					Charset.forName("UTF-8"));
+			os = new OutputStreamWriter(new FileOutputStream(file), Charset.forName("UTF-8"));
 			BufferedWriter writer = new BufferedWriter(os);
 			writer.append(content);
-			writer.close();
+			writer.flush();
 		} catch (Throwable t) {
 			System.err.println("Failed to write content of " + file.getAbsolutePath());
 			t.printStackTrace();
+		} finally {
+			if (os != null) {
+				try {
+					os.close();
+				} catch (IOException ioe) {
+					System.err.println("Failed to close file " + file.getAbsolutePath());
+					ioe.printStackTrace();
+				}
+			}
 		}
 	}
 
@@ -219,11 +245,11 @@
 					}
 				} finally {
 					try {
-						bufin.close();
+						if (bufin != null) bufin.close();
 					} catch (Throwable t) {
 					}
 					try {
-						fos.close();
+						if (fos != null) fos.close();
 					} catch (Throwable t) {
 					}
 				}

--
Gitblit v1.9.1