Skip to content

Commit

Permalink
refactor the code, close file even if the exception is thrown
Browse files Browse the repository at this point in the history
  • Loading branch information
alexott committed Aug 4, 2013
1 parent dcfb17f commit 5e8d5b8
Showing 1 changed file with 15 additions and 16 deletions.
31 changes: 15 additions & 16 deletions modules/incanter-io/src/incanter/io.clj
Expand Up @@ -89,14 +89,12 @@
parsed-data)))))))




(defmethod save incanter.Matrix [mat filename & {:keys [delim header append]
:or {append false delim \,}}]
(let [file-writer (if (= "-" filename)
*out*
(java.io.FileWriter. filename append))]
(do
(try
(when (and header (not append))
(.write file-writer (str (first header)))
(doseq [column-name (rest header)]
Expand All @@ -110,11 +108,10 @@
(doseq [column (rest row)]
(.write file-writer (str delim column)))
(.write file-writer (str \newline)))))
(.flush file-writer)
(.close file-writer))))



(finally
(.flush file-writer)
(when (= "-" filename)
(.close file-writer))))))

(defmethod save :incanter.core/dataset [dataset filename & {:keys [delim header append]
:or {append false delim \,}}]
Expand All @@ -124,20 +121,22 @@
(java.io.FileWriter. filename append))
rows (:rows dataset)
columns (:column-names dataset)]
(do
(try
(when (and header (not append))
(.write file-writer (str (first header)))
(doseq [column-name (rest header)]
(.write file-writer (str delim column-name)))
(.write file-writer (str \newline)))
(doseq [row rows]
(do
(.write file-writer (str (row (first columns))))
(doseq [column-name (rest columns)]
(.write file-writer (str delim (row column-name))))
(.write file-writer (str \newline))))
(.flush file-writer)
(.close file-writer))))
(do
(.write file-writer (str (row (first columns))))
(doseq [column-name (rest columns)]
(.write file-writer (str delim (row column-name))))
(.write file-writer (str \newline))))
(finally
(.flush file-writer)
(when (= "-" filename)
(.close file-writer))))))


(defmethod save java.awt.image.BufferedImage
Expand Down

0 comments on commit 5e8d5b8

Please sign in to comment.