Re: should edn/read call close() on the PushbackReader?

2016-09-02 Thread Thomas Heller
In general Java it is up to the creator of a "stream" to close it, the same 
applies to Clojure pretty much.

Java has "try with resources" and in Clojure you can use "with-open":

(with-open [rdr (open-the-reader)]
  (edn/read rdr {}))

This will ensure .close is called in a finally block.

HTH,
Thomas

On Friday, September 2, 2016 at 2:24:31 PM UTC+2, John Valente wrote:
>
> Running on Windows, I found that I could not delete an edn file that I had 
> read from.  I've looked at a few examples of reading edn, and none of them 
> seem to suggest that the user code should explicitly call close() on the 
> Java object, or that it needs to use with-open.  Should I be doing 
> something like that?
>
> I wonder why Clojure doesn't call close when it hits EOF:
>
>
> https://github.com/clojure/clojure/blob/c6756a8bab137128c8119add29a25b0a88509900/src/jvm/clojure/lang/EdnReader.java#L134
>
> Maybe it shouldn't be necessary, but it seems safe to me:
>
>
> https://docs.oracle.com/javase/7/docs/api/java/io/PushbackReader.html#close()
>
> I've mostly worked on a Mac, where I haven't had trouble.  This only 
> happened to me on Windows, and only once (so far).  I haven't tried to 
> reproduce it.  It is certainly possible I did something else wrong to cause 
> the file to get into an undeletable state.  Still, it does seem to me it 
> would be safe to have the Clojure Java source code call close(), unless I'm 
> missing something.
>
> Thanks,
> John
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


should edn/read call close() on the PushbackReader?

2016-09-02 Thread John Valente
Running on Windows, I found that I could not delete an edn file that I had 
read from.  I've looked at a few examples of reading edn, and none of them 
seem to suggest that the user code should explicitly call close() on the 
Java object, or that it needs to use with-open.  Should I be doing 
something like that?

I wonder why Clojure doesn't call close when it hits EOF:

https://github.com/clojure/clojure/blob/c6756a8bab137128c8119add29a25b0a88509900/src/jvm/clojure/lang/EdnReader.java#L134

Maybe it shouldn't be necessary, but it seems safe to me:

https://docs.oracle.com/javase/7/docs/api/java/io/PushbackReader.html#close()

I've mostly worked on a Mac, where I haven't had trouble.  This only 
happened to me on Windows, and only once (so far).  I haven't tried to 
reproduce it.  It is certainly possible I did something else wrong to cause 
the file to get into an undeletable state.  Still, it does seem to me it 
would be safe to have the Clojure Java source code call close(), unless I'm 
missing something.

Thanks,
John

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.