请问如何把一个文件读出一部分存在一个FileInputSteam中

starlight2008 2005-01-27 11:58:52
可以用RandomAccessFile将文件的一部分取出来,请问我现在如果不把取出的部分再保存成文件,能直接将取出的送到一个FileInputSteam中吗?
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JohnWoo 2005-07-09
  • 打赏
  • 举报
回复
看了楼主的提问,发现自己从来没有想过这个问题。所以,试着解决。

首先,有人说用管道,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系列类。

花了一个多小时,好歹也要在这里罗嗦罗嗦。知识匮乏,内容不免简单空洞,见谅。^_^

想不到更好的解决方法,静待高手。

glorywine 2005-07-09
  • 打赏
  • 举报
回复
thinking in java里面好像有提到过这方面的内容
楼主可以去看看
就是文件流那一章
WinFastNcr 2005-07-08
  • 打赏
  • 举报
回复
UP
BasaraTracy 2005-01-27
  • 打赏
  • 举报
回复
用管道将两个管道接上
starlight2008 2005-01-27
  • 打赏
  • 举报
回复
没人知道?或者说可以把FileInputStream截出一部分形成一个新的FileInputStream吗?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧