复制文本文件:把当前目录下的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. Webform(Repeater控件)

    一.Repeater控件 有五大模板 ItemTemplate :有多少条数据,执行多少遍        AlternatingItemTemplate : 对交替数据项进行格式设置       Se ...

  2. JavaScript一个经典问题

    看下面代码 <ul id="demo"> <li></li> <li></li> <li></li&g ...

  3. javascript --- Ajax基础

    神马是Ajax? Ajax即‘Asynchronous javascript and XML’(异步javascript和XML),也就是所谓的无刷新页面读取技术. http请求 首先要了解http请 ...

  4. [ html canvas getImageData Object.data.length ] canvas绘图属性 getImageData Object.data.length 属性讲解

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...

  5. Uploading Files in SharePoint 2013 using CSOM and REST

    http://www.shillier.com/archive/2013/03/26/uploading-files-in-sharepoint-2013-using-csom-and-rest.as ...

  6. 转:Web应用程序项目XX已配置为使用IIS

    转:http://www.cnblogs.com/Joetao/articles/2392526.html 今天在看开源项目Umbraco是,出现一个项目加载不了,并报如下错误: Web应用程序项目U ...

  7. 理解Lucene索引与搜索过程中的核心类

    理解索引过程中的核心类 执行简单索引的时候需要用的类有: IndexWriter.ƒDirectory.ƒAnalyzer.ƒDocument.ƒField 1.IndexWriter IndexWr ...

  8. [QualityCenter]设置工作流脚本-新建缺陷时描述字段模板设置

    需求:实现新建缺陷时,描述模板自动生成填写模板. 在脚本编辑器找到Defects_Bug_New函数,然后填写以下代码: Sub Defects_Bug_New    On Error Resume ...

  9. 每日Scrum--No.8

    Yesterday:学习和编写程序 Today:总结这次的冲刺和以及测试版的初步完成 Problem:在图的设计过程中掌握了图的基本运算函数的算法的理解和程序的有效吸收,包括图的深度和广度优先的遍历, ...

  10. git提交报错

    Error occurred computing Git commit diffsMissing unknown 0000000000000000000000000000000000000000 co ...