黑马程序员技术交流社区

标题: 我这个字节流复制的无法停止 一直在读取写入 [打印本页]

作者: 潘际昌    时间: 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