可以用RandomAccessFile将文件的一部分取出来,请问我现在如果不把取出的部分再保存成文件,能直接将取出的送到一个FileInputSteam中吗?

解决方案 »

  1.   

    没人知道?或者说可以把FileInputStream截出一部分形成一个新的FileInputStream吗?
      

  2.   

    看了楼主的提问,发现自己从来没有想过这个问题。所以,试着解决。首先,有人说用管道,Piped系列类不适用于解决这个问题的。Piped系列类是为多线程IO传输提供了一个比较简单的实现--内置了自动阻塞的功能。接下来查找资料,试着将Input和Output连接,后无望。看看下面的代码:
    /*
     * 功能: 
     * 作者: JohnWoo
     * 日期: 2005-7-8
     */
    package javaio;import java.io.*;public class TestIO {    public TestIO() {
            super();
        }    public static void main(String[] args) {
            File in = new File("C:/test1.txt" );
            File out = new File( "C:/test2.txt" );        byte data[] = new byte[1024];
            
            try {
                RandomAccessFile file = new RandomAccessFile( in,"r" );
                FileOutputStream os = new FileOutputStream( out );
                BufferedOutputStream bs = new BufferedOutputStream( os );
                while( file.read( data ) != -1 ) {
                    bs.write( data );
                }
                bs.close();
                file.close();
                
            }catch(IOException ex) {
                System.out.println("IOException" );
            }
        }
    }其实,前面定义的byte data[],既是连接Input和Output的通道,我们也可以叫他缓存。大家也都知道。基于此,我们开发一个连接input和output的连接类也就不难了。其中,也就可以按照自己的要求处理缓存中的数据了。
    甚至我们可以实现多线程中的自动阻塞功能,就像Piped系列类。花了一个多小时,好歹也要在这里罗嗦罗嗦。知识匮乏,内容不免简单空洞,见谅。^_^想不到更好的解决方法,静待高手。
      

  3.   

    thinking in java里面好像有提到过这方面的内容
    楼主可以去看看
    就是文件流那一章