baidu_39454556
2020-07-13 15:53字节流字符流的小问题
10一个GBK编码的文本,里面内容:你
1.字节流一次读取一个字节
public static void method1() throws IOException
{
FileInputStream f1 = new FileInputStream("E:\\JAVA练习\\JAVAl练习\\f.txt");
FileOutputStream f2 = new FileOutputStream("E:\\JAVA练习\\JAVAl练习\\f复制.txt");
int len;
while((len = f1.read()) != -1){
f2.write(len);
System.out.println(len);
}
f1.close();
f2.close();
}
读取出来的是196,227
2.字节流一次读取一个字节数组
public static void method2() throws IOException{
FileInputStream f1 = new FileInputStream("E:\\JAVA练习\\JAVAl练习\\f.txt");
FileOutputStream f2 = new FileOutputStream("E:\\JAVA练习\\JAVAl练习\\f复制.txt");
int len;
byte[] by = new byte[1024];
while((len = f1.read(by)) != -1){
f2.write(by);
System.out.println(Arrays.toString(by));
}
f1.close();
f2.close();
}
读取出来的是[-60, -29,]
3.转换流输出
public static void method7() throws IOException{
InputStreamReader f1 = new InputStreamReader(new FileInputStream("E:\\JAVA练习\\JAVAl练习\\f.txt"),"GBK");
OutputStreamWriter f2 = new OutputStreamWriter(new FileOutputStream("E:\\\\\\\\JAVA练习\\\\\\\\JAVAl练习\\\\\\\\f复制.txt\\"),"GBK");
int len;
f2.write(196);
f2.write(227);
f2.write(-60);
f2.write(-29);
f2.write(50403);
三个方法独立运行。
问题:1.第三段明程序为什么写进去都是乱码?50403在GBK表示的不是“你”吗?“你”的
2.第一段程序和第二段程序,GBK编码是50403,二进制是1100010011100011,为什么两次读取的输出不一样?196和227相合并为1100010011100011,-60和-29为什么也表示“你”?将这两种字节以字节流一次写入一个字节形式写入,都可以得到“你”这个字。这是为什么呢?一个汉字用同一种编码能有两种字节表示吗?
- 点赞
- 回答
- 收藏
- 复制链接分享
2条回答
为你推荐
- java 标准Io流
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 0个回答
- 关于java 不能完全读取socket二进制流的问题(数据量越大问题就越严重)
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 0个回答
- 关于Socket中的数据流获取
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 0个回答
- 【已解决】Json收到的pdf字符串流,怎么转回pdf文件?急急急!
- java
- 2个回答
- c语言字符串按照等字节数发送出去
- c
- 3个回答
换一换