【JAVA开发之IO流1-2】IO流中的字符流和字节流
来源:互联网 发布:腾达路由器mac地址过滤 编辑:程序博客网 时间:2024/06/01 09:45
IO流在方向上可以分为输入流和输出流,而在传输方式上又可分为:字符流、字节流。
什么是字符,什么是字节呢?
1个汉字就是一个字符,为2字节,类似的包括全角标点、全角英文字母、日语假名之类的。
1个英文字母也是一个字符,为1字节,类似的包括英文标点之类的。
简单来说,1字节就是1字节,而1字符可以是1字节可以是2字节可以是4字节
字节是ASCII值多少的单位,1个字节等于8位二进制数。
字符是我们可以辨认出的字、符号的单位。
知道什么是字符、字节了,那我们来看看字符流和字节流吧,
字符流包括:java.io.FileWriter,java.io.FileReader等。
它们只能读取写入文本文件,如果用它们读取写入视频、音频、图片的话,会把原先一字节一字节的编码误以为是字符,就把文件破坏掉了。
字节流包括:java.io.FileInputStream,java.io.FileOutputStream等。
它们可以读取写入任何文件,但是无法识别其中的文本,因为这些流无法把字节识别为字符,所以使用它们可以读取写入任何文件,但是无法识别其中的内容。
字节流和字符流的区别在于,字节流效率慢、字符流效率稍微快一点点,字符流只能读取写入识别文本文件,字节流可以读取写入任何文件,但无法识别。简单来说:文本用字符流,其它用字节流。
关于字符流可以参考另一个例子:字符流的使用
下面写一个小例子理解一下字节流:利用字节输出流,和字节输入流,把D:\Demo.gif 复制到E盘根目录下并改名字为DemoCopy.gif(可以修改代码复制任意文件),代码如下:
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class IOStream { public static void main(String[] args) throws IOException {//异常可以用try/cache处理,这里我们直接扔出来 /** * 建立一个输入字节流(in)和一个输出字节流(out) * 并指定in的读取路径和out的写入路径 * in负责读取硬盘上的文件到内存,相当于Windows里的复制 * out负责从内存上写入到硬盘,相当于windows里的粘贴 * */ FileInputStream in=new FileInputStream("D:/Demo.gif");//要复制的文件路径,必须要存在,否则出现找不到文件的异常 FileOutputStream out=new FileOutputStream("E:/DemoCopy.gif");//要粘贴的文件路径,最好不存在,如果存在会被覆盖 /** * 在while循环中,用一个整形变量aa一个一个接收read方法读取到的ASCII值 * 并用输出流将aa写入新文件,直到ASCII值为-1(即什么都没有的时候,文件尾) * */ int aa=in.read();//将第一个读取的ASCII值存入内存 while (aa!=-1) { out.write(aa); aa = in.read(); } out.flush();//将最后一个读取的ASCII值从内存缓冲区写入硬盘 /** * 关闭两个流 * */ in.close(); out.close(); System.out.println("复制成功!!");//这个Dome没有用try/cache处理异常,所以不成功会直接出现异常 }}大家可以用字符流(FileWriter和FileReader)替换掉上面的字节流(FileInputStream和FileOutputStream),用字符流进行复制,结果文件是损坏的
0 0
- 【JAVA开发之IO流1-2】IO流中的字符流和字节流
- io流中的字节和字符
- java IO之字节字符流
- Java IO字符流和字节流
- Java-IO:字节流和字符流
- Java-IO-字节流和字符流
- java IO字符流和字节流
- Java基础:IO流之字节流和字符流
- java 基础之 IO(字节流和字符流)
- java基础--IO流之字节、字符和转换流
- Java IO操作之字节流和字符流
- java IO之字节流和字符流比较
- JAVA之IO 基础(字节流和字符流)
- 【Java之IO】1.字节流和字符流
- Java IO学习笔记之字节流和字符流
- Java基础之-IO中的字节流
- JAVA IO流(1) 字节流和字符流
- Java IO之字节流
- 移动app应用程序开发的个人经验之谈
- PKU离散数学
- Java 设计模式-单例模式
- systemctl介绍
- VMware虚拟机无法识别U盘解决方案
- 【JAVA开发之IO流1-2】IO流中的字符流和字节流
- [BZOJ3143][HNOI2013]游走
- RPC学习(二):RPC的原理分析
- Tomcat虚拟目录
- navicat for mysql psc 没有数据或者只有部分数据(即有一部分表没有数据)
- Python 自动化测试 的 基本用法实例
- corethink功能模块探索开发(五)开启这个模块的配置
- java中的List
- 在bitnami集成环境下进行redmine的二次开发--开发环境的搭建