黑马程序员——IO(Input Output)流
来源:互联网 发布:java代码换行 编辑:程序博客网 时间:2024/05/18 01:02
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
IO(Input Output)流
概述
java对数据的操作是通过流的方式,java用于操作流的对象都在IO包中。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。因为文件编码的不同,而有了对字符进行高效操作的 字符流对象,字符流的原理其实就是基于字节流读取字节时,去查了指定的码表。IO流是用于处理设备行的数据的,根据处理的数据类型不同分为:字节流和字符流。根据流向不同分为:输入流和输出流。对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。
字节流与字符流
java的IO流分两种流:字节流与字符流,他们都是抽象类。字符流处理的单元都是2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为一个字节,操作字节和字节数组。所以字符流是由java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好,因此只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。所有文件的存储都是字节的存储,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再存储这些字节到磁盘。在读取文件时,也是一个字节一个字节地读取以形成字节序列。字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流可以。
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class Filename FilterDemo{
public static void main (String[ ] args){
File dir = new File("e:/java");
FileFilter filter = new FileFilter();
String[ ] filename = dir.list(filter);
for(int i=0;i<filename.length;i++){
System.out.println(filename[i]);
}
}
}
class FileFiter Implements FilenameFilter{
public boolean accept(File dir,String name){
return name.endsWith(",java");
}
}
字符流还具备缓冲区,缓冲区的出现提高了对流的操作效率,原理其实就是将数组进行封装。对应对象是BufferedWriter:newLine():跨平台的换行符。BufferedReader:readLine():一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回。当读到末尾时,返回null。在使用缓冲区对象时,要明确缓冲的存在是为了增强流的功能而存在,所以在建立缓冲区对象时,要先有流对象存在。其实缓冲内部就是在使用流对象的方法,还不过加入了数组对数据进行了临时存储。为了提高操作数据的效率。其实缓冲区中的readLine();方法,用的还是与缓冲区关联的流对象的read方法,只不过每一次读到一个字符,先不进行具体操作,先进行临时存储。当读取到回车标记时,将临时容器中存储的数据一次性返回。
字符流与字节流转换
在某些时候需要进行字符流与字节流之间的转换,那么何时使用转换流呢?我认为当字节和字符之间有转换动作时,或者流操作的数据需要编码或解码时就需要使用转换流。InputStreamReader:是从字节到字符的桥梁,OutputStreamWriter:是从字符到字节的桥梁。字符流与字节流的转换流还有几个特点:1.转换流是字符流和字节流之间的桥梁;2.可对读取到的字节数据经过指定编码转换成字符;3.可对读取到的字符数据经过指定编码转换成字节。
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
0 0
- 黑马程序员———IO (Input Output)流
- 黑马程序员——IO(Input Output)流
- 黑马程序员——IO(Input Output)流(一)
- 黑马程序员——IO(Input Output)流(二)
- 黑马程序员——IO(Input Output)流
- 黑马程序员—java基础学习--IO ( Input Output )流(一)
- 黑马程序员—java基础学习--IO ( Input Output )流(二)
- 黑马程序员-java io(Input Output)流
- 黑马程序员- IO(Input- Output)(一)
- 黑马程序员-第十九天( IO(Input Output)流)
- 黑马程序员——IO--Input和Output基础
- 黑马程序员----IO(Input Output)流及File类
- 《黑马程序员》java笔记->IO(Input Output)流
- 黑马程序员:Java基础总结----IO(Input Output)流概述
- 黑马程序员---IO(Input Output)流(键盘录入、流操作的基本规律)
- IO(Input Output)流
- IO(Input Output)流
- IO流(Input Output)——File类
- Spring技巧之活用FactoryBean
- 图解SSL/TLS协议
- 那些 “有争议”的编程观点
- 类别添加属性
- 实现复数类中的运算符重载
- 黑马程序员——IO(Input Output)流
- 第十二周项目4 - 点、圆的关系
- SQL 优化经验总结34条
- 分数类中的运算符重载
- 几款开源ESB总线的比较
- jstl c标签详解
- 主方法
- 一个程序员眼中的价值
- Java 第三次作业