.skip() always returns the same number as given as parameter while the stream 
itself may or may not skip to given position
--------------------------------------------------------------------------------------------------------------------------

                 Key: VFS-218
                 URL: https://issues.apache.org/jira/browse/VFS-218
             Project: Commons VFS
          Issue Type: Bug
    Affects Versions: 1.0
         Environment: Java 5, using jdk1.6.0_06 on Windows XP SP3
            Reporter: Not Telling


The code below should reproduce the bug, so far I've tested this with file: and 
res: file systems and at least those two expose this bug. As you may notice 
from the source, you should have file called "bla.txt" containing "blabla" (6 
characters) in your C:\temp\ folder for this.


{code:title=VFSStreamSkipping.java}
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.vfs.FileObject;
import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.FileSystemManager;
import org.apache.commons.vfs.VFS;

/**
 * This class demonstrates buggy behaviour of .skip() when using VFS.
 * The bug is that no matter how many bytes were actually skipped, .skip()
 * always returns the same number as the user tried to skip. The stream itself
 * may get skipped though, if one tries to read the stream in this example
 * after .skip(), it will return -1 indicating that .skip() was executed
 * properly.
 */
public class VFSStreamSkipping {
        
        public static void main(String[] args) {
                FileObject file;
                FileSystemManager fsm;
                try {
                        fsm = VFS.getManager();
                } catch (FileSystemException e) {
                        fsm = null;
                }
                
                InputStream is = null;
                
                try {
                        file = fsm.resolveFile("file:C:/temp/bla.txt");
                        // file content is simply "blabla" with no \n or \r
                        is = file.getContent().getInputStream();
                } catch (FileSystemException e) {}
                
                try {
                        long skipped = is.skip(9L);
                        System.out.println(skipped+" <= prints 9, this should 
be 6 as per javadoc's specification; "+
                                        
"http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#skip(long)");
                        
                        System.out.println(is.read());
                } catch (IOException e) {}
        }
}
{code}

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

Reply via email to