J2SE(十六)Java之I/O
来源:互联网 发布:face软件 编辑:程序博客网 时间:2024/06/03 15:51
前言
说到Java IO,不得不提到的就是流(Stream)的概念。流的概念源于UNIX中管道(pipe)的概念,它是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
I/O分类
Java中定义了多种不同流的类型来实现输入和输出功能,可以从不同的角度对其进行分类:(1)根据数据流向不同分为:输入流和输出流
(2)根据处理数据类型的不同分为:字符流和字节流
(3)根据功能的不同分为:节点流和处理流
一、输入流、输出流:
输入输出流是从内存的角度划分的,数据从内存到硬盘,通常认为是输出流,即写操作,从硬盘到内存,通常认为是输入流,即读操作,Java的输入流主要有InputStream和Reader作为基类,而输出流则主要由OutputStream和Writer作为基类。
二、字符流、字节流:
字节流和字符流区别非常简单,它们的用法几乎一样。区别在于字节流和字符流所操作的数据单元不同:字节流操作的最小单元数据是8位字节,而字符流作为最小数据单元是16为字节。字节流主要由InputStream、OutputStream作为基类,而字符流则主要由Reader和Writer作为基类完成。
三、节点流、处理流:
可以从、向一个特定的IO设备,读写数据流,称为节点流,节点流常常也被常务低级流(Low Level Stream),处理流则用于对一个已经存在的流进行连接封装,通过封装后来实现数据的读写功能。处理流称为高级流。
当用处理流的进行输入、输出时,程序并不会直接连接到实际数据源,没有和实际的输入、输出节点连接。使用处理流一个明显的好处是:只要使用相同的处理流,程序就可以采用相同的输入、输出代码来访问不同数据源,随着处理流锁包装节点流的改变,程序实际所访问的数据源也相应发生改变。
处理流的功能主要体现在两个方面:
(1)性能提高:主要以增加缓冲方式来提高输入、输出的效率
(2)操作的便捷:处理流可能提供了系列便捷的方法来一次性输入、输出大批量的内容,而不是输入、输出一个或多个单位数据。
处理流可以“嫁接”在任何已经存在的流的基础上,这就允许Java应用程序采用相同的代码、透明的方式来访问不同的输入、输出设备输入流。
字节流字符流输入流InputStreamReader输出流OutputStreamWriter
IO体系:
下面来看几个例子
//InputStream读文件public void readFileByInputStream(String fileName){try {int b=0;InputStream in=new FileInputStream(fileName);while ((b=in.read())!=-1) {System.out.println(b);}in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
//FileReader读文件public void readFileByFileReader(String fileName){try {int b=0;FileReader reader=new FileReader(fileName);while ((b=reader.read())!=-1) {System.out.println(b);}reader.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
//写文件public void writeByOutPutStream(String fileName,String targetFile){int b=0;InputStream in;try {in = new FileInputStream(fileName);OutputStream out=new FileOutputStream(targetFile);while ((b=in.read())!=-1) {out.write(b);}in.close();out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}//写文件public void writeByFileWriter(String fileName,String targetFile){int b=0;FileReader reader;try { reader=new FileReader(fileName);FileWriter out=new FileWriter(targetFile);while ((b=reader.read())!=-1) {System.out.println(out.getEncoding());out.write((char)b);}reader.close();out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
0 0
- J2SE(十六)Java之I/O
- Java之I/O
- java之I/O
- java中的标准I/O流与文件1(J2SE入门16)
- java中的标准I/O流与文件2(J2SE入门17)
- JAVA之文件操作(I/O)
- JAVA之旅(二十六)——装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片
- JAVA I/O之RandomAccessFile
- 八:Java之I/O
- Java回顾之I/O
- java基础之I/O
- Java回顾之I/O
- java学习之i/o
- Java基础之----I/O
- Java之I/O流
- Java核心之I/O;
- Java回顾之I/O
- java之I/O模型!!!
- 深入浅出之JVM 内存编
- 移动机器人定位与地图创建(SLAM)方法
- 正则表达式
- Linux基础之文件权限LLinux
- 慎用case
- J2SE(十六)Java之I/O
- 利用yii2 gridview实现批量删除案例
- 贪心(多处最优服务次序问题)
- 关于清除浮动
- Java--"The import *** cannot be resolved"问题解决方案
- 菜鸟学习nodejs--安装nodejs
- vim tab设置为4个空格
- hibernate集合映射inverse和cascade详解
- 十五、建造者模式Builder(创建型模式)