java 20 - 8 字节流的文件复制以及汉字在计算机中的存储方式

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

  分析:
    数据源:
      FileIntputStream.java -- 读取数据 -- FileInputStream
    目的地:
      b.txt --- 写入数据 ---- FileOutputStream

  思路:首先读取数据源的内容,然后把读取到的内容再写入到目的地中
  前提:数据源存在,否则会报错

 1 import java.io.FileInputStream;
 2 import java.io.FileOutputStream;
 3 import java.io.IOException;
 4 public class CopyFileDemo1 {
 5
 6     public static void main(String[] args) throws IOException {
 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]

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

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

时间: 2024-10-10 22:31:38

java 20 - 8 字节流的文件复制以及汉字在计算机中的存储方式的相关文章

递归、字节流、文件复制_DAY20

1:递归(理解) (1)方法定义中调用方法本身的现象. (2)递归注意事项: A:要有出口,否则就是死递归. B:次数不能太多,否则内存溢出. 特殊事项:构造方法不能递归定义. 例子:cn.itcast.demo package cn.itcast; /* * 递归算法: * 自己调用自己. * 方法内定义:调用到什么程度,就不调用自己了.即递归出口. */ public class Demo { public static void main(String[] args) { method(5

使用Java语言如何实现快速文件复制?

今天review代码又看到某个"大神"使用古老的方法来实现文件的复制,今天归结一下使用Java语言如何实现快速文件复制: 代码1: 代码2: 运行上述Java代码,代码1和代码2复制同样的文件其结果如下:

QList介绍(QList比QVector更快,这是由它们在内存中的存储方式决定的。QStringList是在QList的基础上针对字符串提供额外的函数。at()操作比操作符[]更快,因为它不需要深度复制)非常实用

FROM:http://apps.hi.baidu.com/share/detail/33517814 今天做项目时,需要用到QList来存储一组点.为此,我对QList类的说明进行了如下翻译. QList是一种表示链表的模板类.QList<T>是Qt的一种泛型容器类.它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作.QList.QLinkedList和QVector提供的操作极其相似:* 对大多数操作来说,我们用QList就可以了.其API是基于索引(inde

JAVA中数值在计算机中的表示方式

很多刚学习JAVA的童鞋不明白为什么int型有时候强转为byte时会变为负数. 这是因为不明白JAVA中数值的表示机制. JAVA中规定用二进制补码的方式表示一个负数. 有了上面的概念之后我们就知道为什么高精度转换低精度类型时有时会变成负数. 比如 int 232转为byte时值 变为 -24 转换过程如下: 232在计算机中存储如下: 00000000 00000000 00000000 11101000 转为byte后舍去高位存储如下: 11101000 这个值最高位为1:因此他是一个负数,

JAVA(IO流)文件复制

1 package com.am; 2 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 7 public class TuPian { 8 9 public static void main(String[] args) { 10 FileInputStream f1 = null; 11 FileOutputStream f2 = null;

Java NIO 利用通道完成文件复制(MappedByteBuffer)

相关学习网址: import java.io.IOException;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;import java.nio.channels.FileChannel.MapMode;import java.nio.file.Paths;import java.nio.file.StandardOpenOption; import org.junit.Test; @Testpubl

使用文件字节流实现文件复制

package com.study02; import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException; public class TestFileCopy { public static void main(String[] args) { FileInputStream fis; try { //数据源

批处理:查找指定条件的文件复制到指定的目录中

@echo off echo                         查找并复制指定条件的文件到指定的目录 echo -------------------------------------------------------------------------------- echo 请输入要搜索的目录,必须使用绝对路径 set /p mulu= echo 请输入查找条件,多个条件请用英文 , 隔开 set /p tiaojian= echo 请输入复制到的目标,必须使用绝对路径 s

Android中数据存储方式一:文件形式

总结在Android中,一共有数据存储的5种方式.今天做一个笔记的整理.关于以文件形式如何来保存数据. 1.在activity_main.xml设计好布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_pa