初学java 实验的BufferedReader实验程序:
import java.io.*;public class TestFilewriter {

public static void main(String[] args) {
       BufferedReader reader;
       BufferedWriter writer;
       try{
        reader=new BufferedReader(new FileReader("D:\\政和店开业\\M2U00207.MPG"));
        writer=new BufferedWriter(new FileWriter("D:\\TestFile\\M2U00205.MPG"));
        int s;
        while((s=reader.read())!=-1){
        writer.write(s);
        writer.flush();
        }
       }catch(IOException e){
        System.out.print("文件读写错误");
       }
}}读出来的文件要比源文件少1M左右。,但是读取txt文件时完整的
但是我用FileInputStream写的程序,读写的文件时完成的,可以完全的读出来这个视频文件!

解决方案 »

  1.   

    buffereReader读MPG行么?没试过,你改用其他基本的流试试
      

  2.   

    用其他的流了,入FileinputStream就可以完整的读取,但是我现在是在实验BufferedReader,在晚上也没有找到是不是可以读取。
      

  3.   

    看了下api文档:
    从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
    看它的适用范围。
      

  4.   

    我开始在api文档看到了FileReader是用来读取字符文件的便捷类,但是不确定,因为确实读取视频文件了,但是读取的不完整。所有我在网上问问。
      

  5.   

    BufferedReader是用来读字符的,视频是字符吗?
    InputStream是用来读二进制流的,视频是二进制流,应该用InputStream
      

  6.   

    用Reader不行的吧,那只能读取字符串,不能读二进制文件,应该用InputStream
      

  7.   

    还是建议用BufferedInputStream即提供了缓冲,提高效率。
    而且视频文件是二进制流。应该用字节流来读取。
    应该用更适合的 。
      

  8.   

    呵呵,已经试验好了,确实不能BufferedReader得用BufferedInpuStream这个方法。
    修改后如下(可以完整的读取视频文件了):
    import java.io.*;public class TestFilewriter { public static void main(String[] args) {
      BufferedInputStream reader;
      BufferedOutputStream writer;
      try{
      reader=new BufferedInputStream(new FileInputStream("D:\\政和店开业\\M2U00207.MPG"));
      writer=new BufferedOutputStream(new FileOutputStream("D:\\TestFile\\M2U00205.MPG"));
      int s;
      while((s=reader.read())!=-1){
      writer.write(s);
      writer.flush();
      }
      }catch(IOException e){
      System.out.print("文件读写错误");
      }
    } }
      

  9.   

    视频,图像,.EXE等二进制的东西要用字节流读啊
    字符读出来的大小会不一样,而且还乱码
      

  10.   

    读视频最好用字节流读。  
    因为是以-1为判断标志结束  
    而用字符流进行视频的解码可能会解出-1的2进制。 导致部分数据丢失。   判断是否读取完毕推荐使用while((s=reader.read())>0){} 
    还有个流的对拷的方法
    Streams.copy(in, out, true);  第三个参数是是否关闭流的意思
      

  11.   

    楼主在输出完毕后有没有调用clear方法?然后在关闭IO,这样看看有没有输出完整