The main design of Scala-IO is around automatic closing of resources each time a resource is accessed in order to ensure that a programmer cannot unintentionally leave resources open in the face of exceptions or other unexpected situations. However, there are cases where the Scala-IO API is desired but the resource management is undesired. The classic case is of reading or writing to System.in and out. Thus Unmanaged resources exist to satisfy this use-case.
Since unmanaged resources is a less common use-case there is not a factory object like there is for normal managed Resources. Instead certain objects can be converted to unmanaged resources using the JavaConverters implicit methods as follows:
Showing posts with label JavaConverters. Show all posts
Showing posts with label JavaConverters. Show all posts
Friday, October 5, 2012
Wednesday, September 26, 2012
Scala-IO Core: To Resource Converters
In order to simplify integration with existing libraries, most commonly Java libraries, Scala-IO provides a JavaConverters object with implicit methods that add as*** methods (asInput, asOutput, asSeekable, etc...) to several types of objects. It is the same pattern as in the scala.collection.JavaConverters object.
These methods can be used instead of the Resource.from*** methods to provide a slightly nicer appearing code.
There is one warning. When using JavaConverters, instead of Resource.from*** for creating Input/Output/Seekable/etc... objects, the chances of falling into the trap of creating non-reusable resources or causing a resource leak is increased. See: scala-io-core-reusable-resources for more details on this.
These methods can be used instead of the Resource.from*** methods to provide a slightly nicer appearing code.
There is one warning. When using JavaConverters, instead of Resource.from*** for creating Input/Output/Seekable/etc... objects, the chances of falling into the trap of creating non-reusable resources or causing a resource leak is increased. See: scala-io-core-reusable-resources for more details on this.
Labels:
daily-scala,
input,
JavaConverters,
Output,
readchars,
resource,
Scala,
scala-io,
scala-io core,
seekable
Subscribe to:
Posts (Atom)