DataInputStream 的read方法的阻塞问题

用DataInputStream 的read方法读取文件信息 假设文件9k,每次读取2k 循环读取直至结束。代码如下:
while((read=in.read(buf)) != -1){
writer.write(buf, 0, read);
writer.flush();
} 问题是:循环5次后 文件已读取完毕。但由于read是阻塞式方法,依旧在那里等着读取,这是程序就“僵死”在那里。请问这种情况一般如何解决,不甚感激!

第1个回答  2013-04-22
读之前加一个判断 有一个avliable方法啊!判断是否到了流的末尾!
第2个回答  2013-04-22
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;public class Test
{
public static void main(String[] args)
{
try
{
DataInputStream in = new DataInputStream(new FileInputStream("D:\\test.txt"));
DataOutputStream writer = new DataOutputStream(new FileOutputStream("D:\\test1.txt"));
byte[] buf = new byte[2048];
int read = 0;
while((read=in.read(buf)) != -1){
writer.write(buf, 0, read);
writer.flush();
System.out.println("sss");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网