A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么我运行时,拷贝出来的视频文件怎么不全呢?是不是在读取的时候某个字节的时候,连续读取了8个1,在转换的时候返回的是-1啊?

public class MyBuffereReader {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                FileReader filereader = new FileReader("D:\\04.avi");
                FileWriter write = new FileWriter("D:\\14.avi");
                MyBufferedDemo my = new MyBufferedDemo(filereader);
                String l =null;
                /*把读取的文件写到另一个文件中*/
                while((l=my.myNewLine())!=null){
                        write.write(l, 0, l.length());
                }
                my.readerclose();
                write.close();
        }

        public static class MyBufferedDemo {
                FileReader reader=null;
                FileWriter write=null;
                public MyBufferedDemo(FileReader reader) {
                        this.reader = reader;
                }
                       
                /**
                 * 自定义一个写一行的方法
                 * @throws IOException
                 */
                public String myNewLine() throws IOException{
                        StringBuilder builer = new StringBuilder();
                        int len = 0;
                        while((len = reader.read())!=-1){
                                if(len=='\r')
                                        continue;
                                if(len=='\n')
                                        return builer.toString();
                                else
                                        builer.append((char)len);
                        }
                        if(builer.length()!=0){
                                return builer.toString();
                        }
                        return null;
                }
                /**
                 * 关闭读取流
                 * @throws IOException
                 */
                public void readerclose() throws IOException {
                        reader.close();
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
赵志勇 + 1 很给力!

查看全部评分

5 个回复

倒序浏览
{:soso_e126:}你用的字符流~~~
换字节流吧
回复 使用道具 举报
哥。你这不是没有COPY完的问题,这个代码根本就不能COPY视频;这个叫字符读取流,只能读写文本、要COPY视频需要字节读取流:FileInputStream,FileOutputStream;
刚好我也刚刚写了一个一样的代码。分享下;
import java.io.*;
class  CopyMedia
{
        public static void main(String[] args)
        {
                FileOutputStream fos= null;
                FileInputStream fis = null;
                try
                {
                         fos=new FileOutputStream("f:\\陈奕迅 - K歌之王.mp3");
                         fis=new FileInputStream("d:\\陈奕迅 - K歌之王.mp3");

                         byte[] buf=new byte[1024*10];
                         int len=0;

                         while ((len=fis.read(buf))!=-1)
                         {
                                 fos.write(buf,0,len);
                         }
                       
                }
                catch (IOException e)
                {
                        throw new RuntimeException("读写失败");
                }
                finally
                {
                        try
                        {
                                if (fos!=null)
                                {
                                        fos.close();
                                }
                        }
                        catch (IOException e)
                        {
                                throw new RuntimeException("读取关闭失败");
                        }
                        try
                        {
                                if (fis!=null)
                                {
                                        fis.close();
                                }
                        }
                        catch (IOException e)
                        {
                                throw new RuntimeException("写入关闭失败");
                        }
                       
                }
               
        }
}

评分

参与人数 1技术分 +1 收起 理由
赵志勇 + 1 很给力!

查看全部评分

回复 使用道具 举报
。。。。恩看出来了呵呵,改成FileOutputStream,FileInputStream
回复 使用道具 举报
方法也不对啊重新写一下吧
回复 使用道具 举报
{:soso_e130:}正在学流的运用呢,所以不懂不奇怪。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马