ByteArrayOutputStream操作的是字节,通过FileInputStream读取字节,然后通过InputStreamReader转为了字符,通过BufferedReader读取字符写入字节,这个逻辑就乱了,而且BufferedReader的read方法读一个字符返回的是它的assic码,然后写入字节解码就乱了。
我改了你的代码,如下
- import java.io.*;
- class Test{
- public static void main(String[] args)throws Exception{
- //数据源
- // BufferedReader bfr=new BufferedReader(new InputStreamReader(new FileInputStream("d:\\d.txt"))); //这个目录如下图。
- FileInputStream fis = new FileInputStream("d:\\d.txt");
- //数据目的
- ByteArrayOutputStream bos=new ByteArrayOutputStream();
- //将源数据写入目的数据。
- byte[] bys = new byte[1024];
- int by = 0;
- while(( by = fis.read(bys))!=-1){
- bos.write(bys,0,by);
- }
- System.out.println(bos.size());
- System.out.println(bos.toString());
- bos.writeTo(new FileOutputStream("d:\\e.txt")); //写入之后全是乱码,前面获取的时候,需要转换在存入缓冲区吗?
- //怎么操作,存入后,还是一模一样的字符?
- }
- }
复制代码 |