黑马程序员技术交流社区
标题:
我这个字节流复制的无法停止 一直在读取写入
[打印本页]
作者:
潘际昌
时间:
2013-11-20 14:52
标题:
我这个字节流复制的无法停止 一直在读取写入
import java.io.*;
public class RuXue6 {
public static void main(String[] args)
{
BufferedOutputStream bo=null;
BufferedInputStream bi=null;
try
{
bi=new BufferedInputStream(new FileInputStream("f:\\Demo.txt"));
bo=new BufferedOutputStream(new FileOutputStream("f:\\Demo_copy.txt"));
byte[] buf=new byte[1024];
int len=bi.read(buf);
while(len!=-1)
{
bo.write(buf, 0,len);
bo.flush();
}
}
catch(IOException e)
{
System.out.println("你的路径是错误的!");
}
finally
{
if(bi!=null)
{
try
{
bi.close();
}
catch(IOException e)
{
System.out.println("读取流关闭失败!");
}
}
if(bo!=null)
{
try
{
bo.close();
}
catch(IOException e)
{
System.out.println("输入流关闭失败!");
}
}
System.out.println("复制成功!");
}
}
作者:
还记得梦想吗
时间:
2013-12-5 08:06
while 语句里的len=(bi.read的)不能写外边,因为是变化的,
作者:
橸瑩膤漃寞林
时间:
2013-12-6 14:01
import java.io.*;
public class RuXue6 {
public static void main(String[] args)
{
BufferedOutputStream bo=null;
BufferedInputStream bi=null;
try
{
bi=new BufferedInputStream(new FileInputStream("f:\\Demo.txt"));
bo=new BufferedOutputStream(new FileOutputStream("f:\\Demo_copy.txt"));
byte[] buf=new byte[1024];
int len=0;
while((len=bi.read(buf))!=-1)
{
bo.write(buf, 0,len);
}
}
catch(IOException e)
{
System.out.println("你的路径是错误的!");
}
finally
{
try
{
if(bi!=null)
bi.close();
}
catch(IOException e)
{
System.out.println("读取流关闭失败!");
}
try
{
if(bo!=null)
bo.close();
}
catch(IOException e)
{
System.out.println("输入流关闭失败!");
}
System.out.println("复制成功!");
}
}
}
我帮你改了一下,我也是初学者,相互学习。你再觉得有疑问建议把相关章节的视频看一下,要我说什么很深奥的,解释原理什么的我也说不上来。
作者:
hel
时间:
2013-12-6 14:57
在判断len的时候他永远是1024个字节,永远不能等于-1
所以你读取的时候应该吧len=bi.read(buf))!=-1 房子while()中,
所以他读取的时候就从1025开始读,每次循环都读,
并不是读一遍,永远是1024
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2