Add a CloseAction to the end of the CloseAction queue (the last action executed).
Add a CloseAction to the end of the CloseAction queue (the last action executed).
The new action to append
a new instance with the added CloseAction
Creates a CloseAction from the function and passes it to appendCloseAction(CloseAction)
Creates a CloseAction from the function and passes it to appendCloseAction(CloseAction)
The new action to append
a new instance with the added CloseAction
This method aspires to be the fastest way to read a stream of known length into memory.
This method aspires to be the fastest way to read a stream of known length into memory.
Obtains a Traversable for conveniently processing the resource as bytes.
Obtains a Traversable for conveniently processing the resource as bytes.
an non-strict traversable over all the bytes
Obtains a Traversable for conveniently processing the file as Ints.
Obtains a Traversable for conveniently processing the file as Ints.
an non-strict traversable over all the bytes with the bytes being represented as Ints
The characters in the object.
The characters in the object.
If the codec is not the same as the source codec (the codec of the underlying data) then the characters will converted to the desired codec.
The codec representing the desired encoding of the characters @return an traversable of all the characters
Copy data from an input to this output.
Copy data from an input to this output. Input will call this method from copyTo if it does not know how to efficiently copy the data. This method thus will copy as effiently as possible and if all else fails simply write the bytes
the source to read data from
do not forward request to input's copyTo method. Often only one end of the transaction will know how to efficiently transfer data so a common pattern is to check the input and see if the type of the Input object is a known type. If not then the input object will be sent the request. However, to prevent an infinite loop the finalize will be set to true so the request is not then forwarded back to copyFrom
Copy all data from this Input object to the Output object as efficiently as possible.
Copy all data from this Input object to the Output object as efficiently as possible.
output sink to copy the data to
do not forward request to output's copyFrom method. Often only one end of the transaction will know how to efficiently transfer data so a common pattern is to check the output and see if the type of the Output object is a known type. If not then the output object will be sent the request. However, to prevent an infinite loop the finalize will be set to true so the request is not then forwarded back to copyTo
Obtain the InputStreamResource(typically) version of this object.
Obtain the InputStreamResource(typically) version of this object.
the InputStreamResource(typically) version of this object.
Obtain an non-strict traversable for iterating through the lines in the object
Obtain an non-strict traversable for iterating through the lines in the object
If the codec is not the same as the source codec (the codec of the underlying data) then the characters will converted to the desired codec.
The strategy for determining the end of line Default is to auto-detect the EOL
if true then the line will end with the line terminator Default is false
@return a non-strict traversable for iterating through all the lines
The codec representing the desired encoding of the characters
Creates a new instance of the underlying resource (or opens it).
Creates a new instance of the underlying resource (or opens it). Sometimes the code block used to create the Resource is non-reusable in which case this Resource can only be used once. This is not recommended. When creating a resource it is recommended to pass the code block for creating the resource to the resource so that the resource can be reused. Of course this is not always possible
This method should only be used with care in cases when Automatic
Resource Management cannot be used because the
InputStream
must be closed manually.
This is public only to permit interoperability with certain Java APIs. A better pattern of use should be:
resource.acquireFor { // call java API }
or
val calculatedResult = resource.acquireAndGet { // cal java API that returns a result }
the actual resource that has been opened
Execute the function 'f' passing an Output instance that performs all operations on a single opened connection to the underlying resource.
Execute the function 'f' passing an Output instance that performs all operations on a single opened connection to the underlying resource. Typically each call to one of the Output's methods results in a new connection. For example if the underlying OutputStream truncates the file each time the connection is made then calling write two times will result in the contents of the second write overwriting the second write.
Even if the underlying resource is an appending, using open will be more efficient since the connection only needs to be made a single time.
the function to execute on the new Output instance (which uses a single connection)
the result of the function
Obtain the OutputStreamResource(typically) version of this object.
Obtain the OutputStreamResource(typically) version of this object.
the OutputStreamResource(typically) version of this object.
Add a CloseAction to the front of the CloseAction queue.
Add a CloseAction to the front of the CloseAction queue.
The new action to prepend
a new instance with the added CloseAction
Creates a CloseAction from the function and passes it to prependCloseAction(CloseAction)
Creates a CloseAction from the function and passes it to prependCloseAction(CloseAction)
The new action to prepend
a new instance with the added CloseAction
Obtain the ReadableByteChannelResource(typically) version of this object.
Obtain the ReadableByteChannelResource(typically) version of this object.
the ReadableByteChannelResource(typically) version of this object.
Obtain the ReadCharsResource version of this object.
Obtain the ReadCharsResource version of this object.
the ReadCharsResource version of this object.
The number of bytes that can be read from the underlying resource.
The number of bytes that can be read from the underlying resource.
if length == None then it is not possible to determine the number of bytes in advance.
Loads all the characters into memory.
Loads all the characters into memory. There is no protection against loading very large files/amounts of data.
The codec representing the desired encoding of the characters
Obtain the scalax.io.WritableByteChannel(typically) version of this object.
Obtain the scalax.io.WritableByteChannel(typically) version of this object.
the scalax.io.WritableByteChannel(typically) version of this object.
Writes a string.
Writes a string.
the data to write
the codec of the string to be written. The string will
be converted to the encoding of sourceCodec
Default is sourceCodec
Write data to the underlying object.
Write data to the underlying object. Each time write is called the resource is reopened, in the case of a file this means that the file will be opened and truncated. The
In the case of writing ints and bytes it is often recommended to write arrays of data since normally the underlying object can write arrays of bytes or integers most efficiently.
Since Characters require a codec to write to an OutputStream characters cannot be written with this method unless a OutputWriterFunction.CharFunction object is provided as the writer.
The data to write to underlying object. Any data that has a resolvable OutputConverter can be written. See the OutputConverter object for the defined OutputConverter implementations and classes to assist implementing more.
The strategy used to write the data to the underlying object. Many standard data-types are implicitly resolved and do not need to be supplied
#writeChars for more on writing characters
Since the OutputConverter object defined for writing Ints encodes Ints using 4 bytes this method is provided to simply write an array of Ints as if they are Bytes.
Since the OutputConverter object defined for writing Ints encodes Ints using 4 bytes this method is provided to simply write an array of Ints as if they are Bytes. In other words just taking the first byte. This is pretty common in Java.io style IO. IE
outputStream.write(1)
1 is written as a single byte.
Write several strings.
Write several strings.
The data to write
A string to add between each string. It is not added to the before the first string or after the last.
The codec of the strings to be written. The strings will
be converted to the encoding of sourceCodec
Obtain the WriteCharsResource version of this object.
Obtain the WriteCharsResource version of this object.
the WriteCharsResource version of this object.
A for accessing and using ByteChannels. Class can be created using the Resource object.