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

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

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

 import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo1 { public static void main(String[] args) throws IOException {
//首先从数据源中读取数据
//创建字节输入流
FileInputStream in = new FileInputStream("a.txt");
//创建字节输出流
FileOutputStream out = new FileOutputStream("b.txt");
//使用读取字节的方式读取数据
int by = 0;
while((by = in.read()) != -1){
//读取到的数据直接输入到目的地中
out.write(by);
}

        in.close();
        out.close();

     }

 }

在上述的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到文件目录下

         //使用字节输入流输出mp3文件
//定义字节输入流对象
FileInputStream in = new FileInputStream("D:\\music\\音乐\\Beyond - 真的爱你.mp3");
//定义字节输出流对象
FileOutputStream ou = new FileOutputStream("真的爱你.mp3");
//使用输入字节数组的方法输入内容
//定义一个字节数组
byte[] by = new byte[1024];
int i = in.read();
while(i != -1){
//使用字节输出流输入内容
ou.write(by,0,i);
}
in.close();
ou.close();

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

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

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

    1:递归(理解) (1)方法定义中调用方法本身的现象. (2)递归注意事项: A:要有出口,否则就是死递归. B:次数不能太多,否则内存溢出. 特殊事项:构造方法不能递归定义. 例子:cn.itcas ...

  2. 采用Java语言如何实现高速文件复制?

    今天review代码也看到了"大神"用老方法来实现文件拷贝.今天归结一下使用Java语言怎样实现高速文件复制: 代码1--使用文件通道的方式: import java.io.Fil ...

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

    FROM:http://apps.hi.baidu.com/share/detail/33517814 今天做项目时,需要用到QList来存储一组点.为此,我对QList类的说明进行了如下翻译. QL ...

  4. java 20 -10 字节流四种方式复制mp3文件,测试效率

    电脑太渣,好慢..反正速率是: 高效字节流一次读写一个字节数组 > 基本字节流一次读写一个字节数组 > 高效字节流一次读写一个字节 > 基本字节流一次读写一个字节 前两个远远快过后面 ...

  5. JAVA(IO流)文件复制

    package com.am; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOEx ...

  6. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  7. Java实现文件复制的四种方式

    背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...

  8. Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

    方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目 ...

  9. 将引用了第三方jar包的Java项目打包成jar文件的两种方法

    方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目 ...

随机推荐

  1. 每一个成功的程序员的身后都有一个--------Parse

    相信好多同行都用过Parse,而正是因为Parse给我们的开发带来的极大的便利,才有了项目从零开始,到正式上线仅仅用上不到两周的时间,现在Swift还在迅速的发展,很快就会占有大量的市场,现在就就结合 ...

  2. ASP.NET本质论第二章应用程序对象学习笔记1

    1.请求的处理参数—上下文对象HttpContext 1) 针对每一次请求,ASP.NET将创建一个处理这次请求所使用的HttpContext对象实例,这个对象实例将用来在ASP.NET服务器的处理过 ...

  3. 使用Sharepoint定时运行Excel中宏程序

    需求:因为Excel中数据量很大,其中包含了几个宏程序从其他数据源读取数据,运行一次宏需要比较长的时间,为了不影响使用,要求每天半夜运行一次Excel中的宏(无参数),Excel存放在共盘上. 解决方 ...

  4. 2015年第3本(英文第2本):Daughter of Deceit

    书名:Daughter of Deceit 作者: Victoria Holt (维多丽亚·荷特) 单词数:12万 词汇量:6000 首万词不重复词数:1700 蓝思值:570 阅读时间:1月12日- ...

  5. 上传Android代码到Jcenter(解决了字符映射的问题)

    请先阅读:http://blog.saymagic.cn/2015/02/16/release-library-to-jcenter.html 最外面的build.gradle // Top-leve ...

  6. 迭代器 iterator(二): 用iterator遍历arraylist

           迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些 ...

  7. 【转】android shape的使用

    shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下: <?xml version="1.0" encoding="ut ...

  8. Android PopupWindow使用之地区、学校选择二级联动

    最近在做一个社交类APP时,希望用户在注册时根据地区来选择自己所在的学校,由于用户手动输入学校,可能会出现各种问题,不利于后面对用户信息的统计.于是决定在客户端做好设置,用户只要根据地区来选择就好.第 ...

  9. 异步post请求之Block方法

    #import "ViewController.h" #import "Header.h" @interface ViewController ()<NS ...

  10. iOS中发送HTTP请求的方案

    在iOS中,常见的发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典的一种方案 NSURLSession:功能比NSURLConnection更加强大, ...