黑马程序员技术交流社区
标题:
操作数组ByteArrayOutputStream的转换问题。
[打印本页]
作者:
还是回去火星吧
时间:
2014-3-4 18:26
标题:
操作数组ByteArrayOutputStream的转换问题。
本帖最后由 还是回去火星吧 于 2014-3-4 18:29 编辑
<P>import java.io.*;
class Test{
public static void main(String[] args)throws Exception{
//数据源
BufferedReader bfr=new BufferedReader(new InputStreamReader(new FileInputStream("E:\\DD\\d.txt"))) //这个目录如下图。
//数据目的
ByteArrayOutputStream bos=new ByteArrayOutputStream();
//将源数据写入目的数据。
int by=0;
while((by=bfr.read())!=-1){
bos.write(by);
}
System.out.println(bos.size());
System.out.println(bos.toString());
bos.writeTo(new FileOutputStream("E:\\DD\\e.txt")); //写入之后全是乱码,前面获取的时候,需要转换在存入缓冲区吗?</P>
<P>//怎么操作,存入后,还是一模一样的字符?
}
}</P>
复制代码
读取d记事本,写入e记事本,但是变成了乱码,怎么操作才不会成乱码呢?
111.jpg
(21.82 KB, 下载次数: 30)
下载附件
2014-3-4 18:25 上传
作者:
e.c
时间:
2014-3-4 19:06
本帖最后由 e.c 于 2014-3-4 19:07 编辑
同问,怎么是乱码
作者:
薛旻
时间:
2014-3-4 19:17
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")); //写入之后全是乱码,前面获取的时候,需要转换在存入缓冲区吗?
//怎么操作,存入后,还是一模一样的字符?
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2