java汉字如何通过字节传输_java 20 - 8 字节流的文件复制以及汉字在计算机中的存储方式...

复制文本文件:把当前目录下的FileIntputStream.java文件里面的内容复制到当前目录的b.txt文件中

分析:

数据源:

FileIntputStream.java -- 读取数据 -- FileInputStream

目的地:

b.txt --- 写入数据 ---- FileOutputStream

思路:首先读取数据源的内容,然后把读取到的内容再写入到目的地中

前提:数据源存在,否则会报错

1 importjava.io.FileInputStream;2 importjava.io.FileOutputStream;3 importjava.io.IOException;4 public classCopyFileDemo1 {5

6 public static void main(String[] args) throwsIOException {7 //首先从数据源中读取数据8 //创建字节输入流

9 FileInputStream in = new FileInputStream("a.txt");10 //创建字节输出流

11 FileOutputStream out = new FileOutputStream("b.txt");12 //使用读取字节的方式读取数据

13 int by = 0;14 while((by = in.read()) != -1){15 //读取到的数据直接输入到目的地中

16 out.write(by);17 }18

in.close();

out.close();

19 }20

21 }

在上述的a.txt文件中,就算是中文,也能够完整复制到b.txt里面。

原因:因为这里是从数据源中读取数据后,并没有进行转码,又直接复制到目的地中。

说到这里,就有个疑问:计算机是怎么对汉字进行存储的?

String s = "中国是我们的祖国;

byte[] bys =s.getBytes();

System.out.println(Arrays.toString(bys));

结果是:[-42, -48, -71, -6, -54, -57, -50, -46, -61, -57, -75, -60, -41, -26, -71, -6]

从就可以看出,在计算中,汉字的存储是分成两个字节的:

第一个字节肯定是负数。

第二个字节常见的是负数,可能有正数。但是没影响。

复制图片、视频、MP4之类的一样的操作,只是后两者的读取数据方式应该用

int read(byte[] b):一次读取一个字节数组

需求:复制D:\music\音乐里的Beyond - 真的爱你.mp3到文件目录下

1 //使用字节输入流输出mp3文件2 //定义字节输入流对象

3 FileInputStream in = new FileInputStream("D:\\music\\音乐\\Beyond - 真的爱你.mp3");4 //定义字节输出流对象

5 FileOutputStream ou = new FileOutputStream("真的爱你.mp3");6 //使用输入字节数组的方法输入内容7 //定义一个字节数组

8 byte[] by = new byte[1024];9 int i =in.read();10 while(i != -1){11 //使用字节输出流输入内容

12 ou.write(by,0,i);13 }14 in.close();15 ou.close();

字节流的两种读取方式的图解:

7b17a97fb28139d14508bfcb030aa750.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值