[ 
https://issues.apache.org/jira/browse/IO-92?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michele Mazzucco updated IO-92:
-------------------------------

    Attachment: DeferredPeriodicOutputStreamTest.java
                DeferredPeriodicOutputStream.java

I've updated the class because of a bug which happens when one tries to write a 
chunk of data (altogether) which is bigger than the threshold. In this case the 
"temporary" arrays grows, while it shouldn't.
I've fixed the problem by overriding the write(byte[] b) and write(byte[] b, 
int off, int len) methods.


p.s. I've implemented also a version which uses a ByteBuffer attached to a 
FileChannel, but I've found out that it generally performs worst.

> Add DeferredPeriodicOutputStream
> --------------------------------
>
>                 Key: IO-92
>                 URL: https://issues.apache.org/jira/browse/IO-92
>             Project: Commons IO
>          Issue Type: New Feature
>          Components: Streams/Writers
>         Environment: Windows XP SP2, jdk 1.5
>            Reporter: Michele Mazzucco
>             Fix For: 1.4
>
>         Attachments: DeferredPeriodicOutputStream.java, 
> DeferredPeriodicOutputStream.java, DeferredPeriodicOutputStream.java, 
> DeferredPeriodicOutputStreamTest.java, DeferredPeriodicOutputStreamTest.java, 
> DeferredPeriodicOutputStreamTest.java
>
>
> I've extended the ThresholdingOutputStream class with a new class which
> behaves different from DeferredFileOutputStream:
> - when the stream is closed, the content stored in memory is *always* flushed 
> to disk (in DeferredFileOutputStream, instead, if the treshold
> is not reached data is lost)
> - DeferredFileOutputStream maintains data in memory only until the treshold 
> value has been reached, then it immediately writes every byte
> to disk. This new implementation, instead, caches treshold bytes in memory, 
> and every time that value is reached (that is, treshold, 2 * threshold, etc), 
> it flushes data to disk. In other words it acts as a cache.
> - It implements the java.io.DataOutput interface, that is, it provides 
> utility methods to write all primitive types (e.g. short, byte, char, int, 
> float, long, double and String in different formats)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to