初学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写的程序,读写的文件时完成的,可以完全的读出来这个视频文件!
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写的程序,读写的文件时完成的,可以完全的读出来这个视频文件!
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
看它的适用范围。
InputStream是用来读二进制流的,视频是二进制流,应该用InputStream
而且视频文件是二进制流。应该用字节流来读取。
应该用更适合的 。
修改后如下(可以完整的读取视频文件了):
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("文件读写错误");
}
} }
字符读出来的大小会不一样,而且还乱码
因为是以-1为判断标志结束
而用字符流进行视频的解码可能会解出-1的2进制。 导致部分数据丢失。 判断是否读取完毕推荐使用while((s=reader.read())>0){}
还有个流的对拷的方法
Streams.copy(in, out, true); 第三个参数是是否关闭流的意思