博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java字节流和字符流
阅读量:6639 次
发布时间:2019-06-25

本文共 2385 字,大约阅读时间需要 7 分钟。

  hot3.png

文件IO操作流程

在Java中IO操作也是有相应步骤的,以文件操作为例,主要的操作流程如下:

  1. 使用File类打开一个文件

  2. 通过字节流或字符流的子类,指定输出的位置

  3. 进行读/写操作(一次性读/写或者一个个字节读/写)

  4. 关闭输入/输出

IO操作属于资源操作,一定要记得关闭

常用的类:

public abstract class  InputStream public class  FileInputStream public abstract class  OutputStream public class  FileOutputStream   public abstract class  Writer public class  OutputStreamWriter public class  FileWriter public abstract class  Reader public class InputStreamReader public class  FileReader 由于是文件操作所以都是java.io包中。 注意一下继承关系: FileWriter不是Writer的子类,是OutputStreamWriter的子类。同时FileReader也不是Reader的子类,是InputStreamReader的子类。

字节流和字符流的区别和应用:

什么是字节流和字符流? 如果数据流中最小的数据单元是字节,那么称这种流为字节流;如果数据流中最小的数据单元是字符,那么称这种流为字符流。在Java的IO系统中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,java.io.Reader和java.io.Writer分别表示字符输入流和字符输出流。

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点    所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列1. 字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的 但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化 这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联 在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的.

 byte和char的区别

byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。 char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。 Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;

字节流和字符流的转换

import java.io.* ;public class OutputStreamWriterDemo01{	public static void main(String args[]) throws Exception	{	// 所有异常抛出		File f = new File("d:" + File.separator + "test.txt") ;			Writer out = null ;	// 字符输出流		out = new OutputStreamWriter(new FileOutputStream(f)) ;	// 字节流变为字符流		out.write("hello world!!") ;	// 使用字符流输出		out.close() ;	}};

 

import java.io.* ;public class InputStreamReaderDemo01{	public static void main(String args[]) throws Exception{		File f = new File("d:" + File.separator + "test.txt") ;			Reader reader = null ;		reader = new InputStreamReader(new FileInputStream(f)) ;	// 将字节流变为字符流		char c[] = new char[1024] ;		int len = reader.read(c) ;	// 读取		reader.close() ;	// 关闭		System.out.println(new String(c,0,len)) ;	}};

  参考:

 [1].   

[2].   

[3]. 

[4].  

[5].  mldn视频  

转载于:https://my.oschina.net/itfanr/blog/195717

你可能感兴趣的文章
共话AIoT与“智能+”,“AI赋能 智联万物——开发者沙龙·无锡站”圆满落幕
查看>>
python设计模式(十):享元模式
查看>>
使用 Promwww9992019comI8I2222IIIIetheus 监控 Ceph
查看>>
[Leetcode] Lowest Common Ancestor of a Binary Tree 最小公共祖先
查看>>
WinRAR 曝出代码执行漏洞,该升级了
查看>>
前程无忧爬虫源码及分析(一)
查看>>
中国用户体验设计究竟有多强
查看>>
去除WPF中3D图形的锯齿
查看>>
Mozilla Firefox 67.0 Beta 8 (Quantum) 发布
查看>>
Tomcat启动、关闭、重启脚本
查看>>
Docker Windows Server 应用迁移计划上线,让您轻松处理旧版应用程序!
查看>>
Django template过滤器
查看>>
WPF查找父元素子元素
查看>>
(1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
查看>>
Java Poi创建与读取Excel
查看>>
hdu 1811Rank of Tetris (并查集 + 拓扑排序)
查看>>
vuejs2
查看>>
CAPI c++ 遍历lua表
查看>>
关于Android内存优化你应该知道的一切
查看>>
CSS选择器
查看>>