scalax.io

SeekableByteChannelResource

class SeekableByteChannelResource [+A <: SeekableByteChannel] extends SeekableResource[A] with ResourceOps[A, SeekableByteChannelResource[A]]

A ManagedResource for accessing and using SeekableByteChannels. Class can be created using the Resource object.

Linear Supertypes
SeekableResource[A], OutputResource[A], InputResource[A], Resource[A], ResourceOps[A, SeekableByteChannelResource[A]], ManagedResourceOperations[A], ManagedResource[A], Seekable, Output, Input, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. SeekableByteChannelResource
  2. SeekableResource
  3. OutputResource
  4. InputResource
  5. Resource
  6. ResourceOps
  7. ManagedResourceOperations
  8. ManagedResource
  9. Seekable
  10. Output
  11. Input
  12. AnyRef
  13. Any
Visibility
  1. Public
  2. All

Instance Constructors

  1. new SeekableByteChannelResource (opener: (Seq[OpenOption]) ⇒ A, closeAction: CloseAction[A], sizeFunc: () ⇒ Option[Long], descName: ResourceDescName, openOptions: Option[Seq[OpenOption]])

Value Members

  1. def ! : A @scala.util.continuations.cpsParam[Unit,Unit]

    Definition Classes
    ManagedResourceOperations → ManagedResource
  2. def != (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  3. def != (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  4. def ## (): Int

    Attributes
    final
    Definition Classes
    AnyRef → Any
  5. def == (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  6. def == (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  7. def acquireAndGet [B] (f: (A) ⇒ B): B

    Definition Classes
    ManagedResourceOperations → ManagedResource
  8. def acquireFor [B] (f: (A) ⇒ B): Either[List[Throwable], B]

    Definition Classes
    Resource → ManagedResource
  9. def and [B] (that: ManagedResource[B]): ManagedResource[(A, B)]

    Definition Classes
    ManagedResourceOperations → ManagedResource
  10. def append (string: String)(implicit codec: Codec = Codec.default): Unit

    Append a string to the end of the Seekable object.

    Append a string to the end of the Seekable object.

    string

    the data to write

    codec

    the codec of the string to be written. The string will be converted to the encoding of codec

    Definition Classes
    Seekable
  11. def append [T] (data: T)(implicit converter: OutputConverter[T]): Unit

    Append bytes to the end of a file

    Append bytes to the end of a file

    Important: The use of an Array is highly recommended because normally arrays can be more efficiently written using the underlying APIs

    data

    The data to write. This can be any type that has a OutputConverter associated with it. There are predefined $outputConverters for several types. See the OutputConverter object for the predefined types and for objects to simplify implementing custom OutputConverter

    $converterParam

    Definition Classes
    Seekable
  12. def appendChannel [U] (f: (SeekableByteChannel) ⇒ U): U

    Attributes
    protected
    Definition Classes
    Seekable
  13. def appendCloseAction [B >: A] (newAction: CloseAction[B]): SeekableByteChannelResource[A]

    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).

    newAction

    The new action to append

    returns

    a new instance with the added CloseAction

    Definition Classes
    SeekableByteChannelResourceResourceOps
  14. def appendCloseAction [B >: A] (newAction: (B) ⇒ Unit): SeekableByteChannelResource[A]

    Creates a CloseAction from the function and passes it to appendCloseAction(CloseAction)

    Creates a CloseAction from the function and passes it to appendCloseAction(CloseAction)

    newAction

    The new action to append

    returns

    a new instance with the added CloseAction

    Definition Classes
    ResourceOps
  15. def appendIntsAsBytes (data: Int*): Unit

    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.

    Definition Classes
    Seekable
  16. def appendStrings (strings: Traversable[String], separator: String = "")(implicit codec: Codec = Codec.default): Unit

    Append several strings to the end of the Seekable object.

    Append several strings to the end of the Seekable object.

    strings

    The strings to write

    separator

    A string to add between each string. It is not added to the before the first string or after the last.

    codec

    The codec of the strings to be written. The strings will be converted to the encoding of codec

    Definition Classes
    Seekable
  17. def asInstanceOf [T0] : T0

    Attributes
    final
    Definition Classes
    Any
  18. def byteArray : Array[Byte]

    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.

    Definition Classes
    Input
  19. def byteChannel : ByteChannelResource[A]

  20. def bytes : ResourceView[Byte]

    Obtains a Traversable for conveniently processing the resource as bytes.

    Obtains a Traversable for conveniently processing the resource as bytes.

    returns

    an non-strict traversable over all the bytes

    Definition Classes
    SeekableByteChannelResourceSeekableInput
  21. def bytesAsInts : ResourceView[Int]

    Obtains a Traversable for conveniently processing the file as Ints.

    Obtains a Traversable for conveniently processing the file as Ints.

    returns

    an non-strict traversable over all the bytes with the bytes being represented as Ints

    Definition Classes
    SeekableByteChannelResourceSeekableInput
  22. def chars (implicit codec: Codec): ResourceView[Char]

    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.

    codec

    The codec representing the desired encoding of the characters @return an traversable of all the characters

    Definition Classes
    SeekableInput
  23. def clone (): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  24. def copyDataFrom (input: Input, finalize: Boolean): Unit

    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

    input

    the source to read data from

    finalize

    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

    Definition Classes
    OutputResourceOutput
  25. def copyDataTo (output: Output, finalize: Boolean): Unit

    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

    output sink to copy the data to

    finalize

    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

    Definition Classes
    InputResourceInput
  26. def eq (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  27. def equals (arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  28. def finalize (): Unit

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  29. def flatMap [B, To] (f: (A) ⇒ B)(implicit translator: CanSafelyFlatMap[B, To]): To

    Definition Classes
    ManagedResourceOperations → ManagedResource
  30. def foreach (f: (A) ⇒ Unit): Unit

    Definition Classes
    ManagedResourceOperations → ManagedResource
  31. def getClass (): java.lang.Class[_]

    Attributes
    final
    Definition Classes
    AnyRef → Any
  32. def hashCode (): Int

    Definition Classes
    AnyRef → Any
  33. def inputStream : InputStreamResource[ChannelInputStreamAdapter[A]]

    Obtain the InputStreamResource(typically) version of this object.

    Obtain the InputStreamResource(typically) version of this object.

    returns

    the InputStreamResource(typically) version of this object.

    Definition Classes
    SeekableByteChannelResourceInputResource
  34. def insert [T] (position: Long, data: T)(implicit converter: OutputConverter[T]): Any

    Inserts data at a position in the Seekable.

    Inserts data at a position in the Seekable. The actual position in the Seekable where the data is inserted depends on the type of data being written. For example if Longs are being written then position calculated as position * 8

    Important: The use of an Array is highly recommended because normally arrays can be more efficiently written using the underlying APIs

    position

    The position where the data is inserted into the Seekable. The actual position in the Seekable where the data is inserted depends on the type of data being written. For example if Longs are being written then position calculated as position * 8

    data

    The data to write. This can be any type that has a OutputConverter associated with it. There are predefined $outputConverters for several types. See the OutputConverter object for the predefined types and for objects to simplify implementing custom OutputConverter

    $converterParam

    Definition Classes
    Seekable
  35. def insert (position: Long, string: String)(implicit codec: Codec = Codec.default): Unit

    Inserts a string at a position in the Seekable.

    Inserts a string at a position in the Seekable. This is a potentially inefficient because of the need to count characters. If the codec is not a fixed sized codec (for example UTF8) each character must be converted in the file up to the point of insertion.

    position

    The position in the file to perform the insert. A position of 2 will insert the character after the second character (not byte).

    string

    The string that will be inserted into the Seekable

    codec

    The codec to use for determining the location for inserting the string and for encoding the string as bytes

    Definition Classes
    Seekable
  36. def insertIntsAsBytes (position: Long, data: Int*): Any

    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.

    Definition Classes
    Seekable
  37. def isInstanceOf [T0] : Boolean

    Attributes
    final
    Definition Classes
    Any
  38. def lines (terminator: Terminator = Terminators.Auto, includeTerminator: Boolean = false)(implicit codec: Codec = Codec.default): ResourceView[String]

    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.

    terminator

    The strategy for determining the end of line Default is to auto-detect the EOL

    includeTerminator

    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

    codec

    The codec representing the desired encoding of the characters

    Definition Classes
    Input
  39. def map [B, To] (f: (A) ⇒ B)(implicit translator: CanSafelyMap[B, To]): To

    Definition Classes
    ManagedResourceOperations → ManagedResource
  40. def ne (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  41. def notify (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  42. def notifyAll (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  43. def open (): OpenedResource[A]

    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
    }
    
    returns

    the actual resource that has been opened

    Definition Classes
    SeekableByteChannelResourceResource
  44. def open [U] (f: (OpenSeekable) ⇒ U): U

    Execute the function 'f' passing an Seekable instance that performs all operations on a single opened connection to the underlying resource.

    Execute the function 'f' passing an Seekable instance that performs all operations on a single opened connection to the underlying resource. Typically each call to one of the Seekable's methods results in a new connection. For example if write it called typically it will write to the start of the seekable but in open it will write to the current position.

    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.

    f

    the function to execute on the new Output instance (which uses a single connection)

    returns

    the result of the function

    Definition Classes
    Seekable
  45. val openOptions : Option[Seq[OpenOption]]

    Attributes
    protected
  46. def openOutput [U] (f: (Output) ⇒ U): U

    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.

    f

    the function to execute on the new Output instance (which uses a single connection)

    returns

    the result of the function

    Definition Classes
    Output
  47. def outputStream : OutputStreamResource[ChannelOutputStreamAdapter[A]]

    Obtain the OutputStreamResource(typically) version of this object.

    Obtain the OutputStreamResource(typically) version of this object.

    returns

    the OutputStreamResource(typically) version of this object.

    Definition Classes
    SeekableByteChannelResourceOutputResource
  48. def patch [T] (position: Long, data: T, overwrite: Overwrite)(implicit converter: OutputConverter[T]): Unit

    Update a portion of the file content at the declared location.

    Update a portion of the file content at the declared location. This is the most flexible of the random access methods but is also (probably) the trickiest to fully understand. That said it behaves (almost) identical to a scala.collection.Seq.patch method, so if you understand that you should not have difficulty understanding this method.

    Important: The use of an Array is highly recommended because normally arrays can be more efficiently written using the underlying APIs

    To append data the position must >= size

    If the position is within the file but the position + bytes.length is beyond the end of the file the file will be enlarged so that the entire string can fit in the file

    The write begins at the position indicated. So if position = 0 then the write will begin at the first byte of the file.

    position

    The start position of the update starting at 0. The position must be within the file or == size (for appending)

    data

    The data to write. This can be any type that has a OutputConverter associated with it. There are predefined $outputConverters for several types. See the OutputConverter object for the predefined types and for objects to simplify implementing custom OutputConverter

    overwrite

    The strategy that dictates how many characters/bytes/units are overwritten $converterParam

    Definition Classes
    Seekable
  49. def patch (position: Long, string: String, overwrite: Overwrite)(implicit codec: Codec = Codec.default): Unit

    Update a portion of the file content at the declared location.

    Update a portion of the file content at the declared location. This is the most flexible of the random access methods but is also (probably) the trickiest to fully understand. That said it behaves (almost) identical to a scala.collection.Seq.patch method, so if you understand that you should not have difficulty understanding this method.

    If the position is beyond the end of the file a BufferUnderflow Exception will be thrown

    If the position is within the file but the position + string.getBytes(codec).length is beyond the end of the file the file will be enlarged so that the entire string can fit in the file

    The write begins at the position indicated. So if position = 0 then the write will begin at the first byte of the file.

    position

    The start position of the update starting at 0. The position is the position'th character in the file using the codec for decoding the file The position must be within the file.

    string

    The string to write to the file starting at position.

    overwrite

    The strategy that dictates how many characters/bytes/units are overwritten

    codec

    The codec to use for decoding the underlying data into characters

    Definition Classes
    Seekable
  50. def patchIntsAsBytes (position: Long, overwrite: Overwrite, data: Int*): Unit

    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.

    Definition Classes
    Seekable
  51. def prependCloseAction [B >: A] (newAction: CloseAction[B]): SeekableByteChannelResource[A]

    Add a CloseAction to the front of the CloseAction queue.

    Add a CloseAction to the front of the CloseAction queue.

    newAction

    The new action to prepend

    returns

    a new instance with the added CloseAction

    Definition Classes
    SeekableByteChannelResourceResourceOps
  52. def prependCloseAction [B >: A] (newAction: (B) ⇒ Unit): SeekableByteChannelResource[A]

    Creates a CloseAction from the function and passes it to prependCloseAction(CloseAction)

    Creates a CloseAction from the function and passes it to prependCloseAction(CloseAction)

    newAction

    The new action to prepend

    returns

    a new instance with the added CloseAction

    Definition Classes
    ResourceOps
  53. def readWriteChannel [U] (f: (SeekableByteChannel) ⇒ U): U

    Attributes
    protected
    Definition Classes
    Seekable
  54. def readableByteChannel : ReadableByteChannelResource[A]

    Obtain the ReadableByteChannelResource(typically) version of this object.

    Obtain the ReadableByteChannelResource(typically) version of this object.

    returns

    the ReadableByteChannelResource(typically) version of this object.

    Definition Classes
    SeekableByteChannelResourceInputResource
  55. def reader (implicit sourceCodec: Codec): ReaderResource[ChannelReaderAdapter[A]]

    Obtain the ReadCharsResource version of this object.

    Obtain the ReadCharsResource version of this object.

    returns

    the ReadCharsResource version of this object.

    Definition Classes
    SeekableByteChannelResourceInputResource
  56. def reflect [B] : A @util.continuations.package.cps[Either[List[Throwable],B]]

    Definition Classes
    ManagedResourceOperations → ManagedResource
  57. def size : Option[Long]

    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.

    Attributes
    final
    Definition Classes
    InputResourceInput
  58. val sizeFunc : () ⇒ Option[Long]

    Attributes
    protected
    Definition Classes
    SeekableByteChannelResourceInputResource
  59. def slurpString (implicit codec: Codec = Codec.default): String

    Loads all the characters into memory.

    Loads all the characters into memory. There is no protection against loading very large files/amounts of data.

    codec

    The codec representing the desired encoding of the characters

    Definition Classes
    Input
  60. def synchronized [T0] (arg0: ⇒ T0): T0

    Attributes
    final
    Definition Classes
    AnyRef
  61. def tempFile (): Input with Output

    Create a temporary file to use for performing certain operations.

    Create a temporary file to use for performing certain operations. It should be as efficient as possible to copy from the temporary file to this Seekable and vice-versa. Can be overridden for performance

    Attributes
    protected
    Definition Classes
    Seekable
  62. def toString (): String

    Definition Classes
    SeekableByteChannelResource → AnyRef → Any
  63. def toTraversable [B] (f: (A) ⇒ TraversableOnce[B]): Traversable[B]

    Definition Classes
    ManagedResourceOperations → ManagedResource
  64. def truncate (position: Long): Unit

    Truncate/Chop the Seekable to the number of bytes declared by the position param

    Truncate/Chop the Seekable to the number of bytes declared by the position param

    Definition Classes
    Seekable
  65. def truncateString (position: Long)(implicit codec: Codec = Codec.default): Unit

    Definition Classes
    Seekable
  66. def underlyingChannel (append: Boolean): CloseableOpenedResource[A]

    Attributes
    protected
    Definition Classes
    SeekableByteChannelResourceSeekable
  67. def underlyingOutput : OutputResource[OutputStream]

    Attributes
    protected
    Definition Classes
    SeekableByteChannelResourceSeekableOutput
  68. def wait (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  69. def wait (arg0: Long, arg1: Int): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  70. def wait (arg0: Long): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  71. def writableByteChannel : WritableByteChannelResource[A]

    Obtain the scalax.io.WritableByteChannel(typically) version of this object.

    Obtain the scalax.io.WritableByteChannel(typically) version of this object.

    returns

    the scalax.io.WritableByteChannel(typically) version of this object.

    Definition Classes
    SeekableByteChannelResourceOutputResource
  72. def write (string: String)(implicit codec: Codec = Codec.default): Unit

    Writes a string.

    Writes a string.

    string

    the data to write

    codec

    the codec of the string to be written. The string will be converted to the encoding of sourceCodec Default is sourceCodec

    Definition Classes
    Output
  73. def write [T] (data: T)(implicit writer: OutputConverter[T]): Unit

    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.

    data

    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.

    writer

    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

    Definition Classes
    Output
    See also

    #writeChars for more on writing characters

  74. def writeChars (characters: TraversableOnce[Char])(implicit codec: Codec = Codec.default): Unit

    Definition Classes
    Output
  75. def writeIntsAsBytes (data: Int*): Unit

    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.

    Definition Classes
    Output
  76. def writeStrings (strings: Traversable[String], separator: String = "")(implicit codec: Codec = Codec.default): Unit

    Write several strings.

    Write several strings.

    strings

    The data to write

    separator

    A string to add between each string. It is not added to the before the first string or after the last.

    codec

    The codec of the strings to be written. The strings will be converted to the encoding of sourceCodec

    Definition Classes
    Output
  77. def writer (implicit sourceCodec: Codec): WriterResource[ChannelWriterAdapter[A]]

    Obtain the WriteCharsResource version of this object.

    Obtain the WriteCharsResource version of this object.

    returns

    the WriteCharsResource version of this object.

    Definition Classes
    SeekableByteChannelResourceOutputResource

Inherited from SeekableResource[A]

Inherited from OutputResource[A]

Inherited from InputResource[A]

Inherited from Resource[A]

Inherited from ResourceOps[A, SeekableByteChannelResource[A]]

Inherited from ManagedResourceOperations[A]

Inherited from ManagedResource[A]

Inherited from Seekable

Inherited from Output

Inherited from Input

Inherited from AnyRef

Inherited from Any