首页 > 分享 > java IO流总结

java IO流总结


流:流是一组有序的,有起点、终点的字节集合,是对数据传输的总称和抽象。即数据在两设备间的传输称为流,流的本质是数据传输。根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

根据处理数据类型不同分类:字符流和字节流

根据数据流向不同分为:输入流和输出流

根据是否直接连接数据源分为:节点流和处理流(装饰流)

字符流和字节流的区别:

字节流:一次读入或读出8位二进制(一个字节),能处理所有类型的数据。

字符流:因为数据编码的不同,为了对字符进行更高效操作,产生了字符流,其本质基于字节流。一次读入或读出16位二进制(一个字符),根据码表映射字符,一次可读取多个字节,只能处理字符类型数据。

节点流:直接连接数据源的流类,实现将数据源转换为流对象,实体流类可单独使用,例如:FileInputStream/FileOutputStream和FileReader/FileWriter。

装饰流:不直接连接数据源,而是以其他流对象为基础建立的流类,实现将实体流中数据进行转换,增强流对象的读写能力,必须配合实体流或装饰流进行使用。被称为“流的嵌套”,它不改变原来流对象中数据的内容,只是进行了一些功能的增强。例如:DataInputStream/DateOutputStream、BufferReader和BufferWriter和ObjectInputStream/ObjectOutputStream。

下面给出FileInputStream、BufferInputStream、BufferReader读写文件的例子:

package stream;

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

public class StreamTest {

public static void main(String[] args) {

String fileName = "L:WorkspaceTestsrcstreamStreamTest.java";

String result = null;

result = readByFileInputStream(fileName);

System.out.println("result1: " + result);

result = readByBufferInputStream(fileName);

System.out.println("result2: " + result);

result = readByBufferedReader(fileName);

System.out.println("result3: " + result);

}

public static String readByBufferInputStream(String fileName) {

BufferedInputStream bufferInputStream = null;

FileInputStream inputStream = null;

try {

inputStream = new FileInputStream(new File(fileName));

bufferInputStream = new BufferedInputStream(inputStream);

int size = bufferInputStream.available();

byte[] tmpArr = new byte[size];

bufferInputStream.read(tmpArr);

return new String(tmpArr);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (null != bufferInputStream) {

try {

bufferInputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (null != inputStream) {

try {

inputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return null;

}

public static String readByFileInputStream(String fileName) {

FileInputStream inputStream = null;

try {

inputStream = new FileInputStream(new File(fileName));

int size = inputStream.available();

byte[] tmpArr = new byte[size];

inputStream.read(tmpArr);

return new String(tmpArr);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (null != inputStream) {

try {

inputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return null;

}

public static String readByBufferedReader(String fileName) {

FileReader reader = null;

BufferedReader bufferReader = null;

String result = null;

try {

reader = new FileReader(new File(fileName));

bufferReader = new BufferedReader(reader);

String line = null;

StringBuilder builder = new StringBuilder();

while (null != (line = bufferReader.readLine())) {

builder.append(line).append('n');

}

result = builder.toString();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (null != reader) {

try {

reader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (null != bufferReader) {

try {

bufferReader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return result;

}

}

参考:http://blog.csdn.net/zhaoyanjun6/article/details/54292148

相关知识

IO(2) 缓冲字节输入输出流
编写Java程序模拟主人养宠物 java写一个宠物系统
专业java:void($={0})java:void($={0})java:void(LOGO设计免费生成器
电子宠物游戏java
Java基于JAVA语言的宠物寄养管理(开题+源码)
毕业设计:基于java的宠物领养系统设计与实现
Java基于java鸟类管理系统与实现(开题+源码)
【Java项目】java实战宠物领养系统项目
错误页
java/jsp/ssm流浪动物领养系统【2024年毕设】

网址: java IO流总结 https://m.mcbbbk.com/newsview236072.html

所属分类:萌宠日常
上一篇: 除了日常的伴侣宠物外,你了解植宠
下一篇: 原来养宠物的人,都这样装修自己的