您的位置:首页 > 编程语言 > Java开发

java I/O流详解

2016-07-12 14:37 399 查看

概念

java中一切都是面向对象的,在I/O流操作中,可分为数据对象和操作数据对象,对流操作的单元可分为字节流和字符流。

字节流:

1)操作对象是字节,字节是数据在计算机中存储的单元,是一个二进制数

2)是直接操纵文件

字符流:

1)操作对象是文本,字符是抽象符号定义

2)会将数据放入缓冲区,在操作流对象关闭的时候,从缓冲区中写出数据

输入流:

对数据操作,以流的形式存在,从流中读取数据

输出流:

对数据处理,写入到流中,写出到文件中

字节流



SequenceInputStream

SequenceInputStream sequenceInputStream = null;

Vector<FileInputStream> vector = new Vector<FileInputStream>();
vector.addElement(new FileInputStream(new File("D://text1.txt")));
vector.addElement(new FileInputStream(new File("D://text2.txt")));
vector.addElement(new FileInputStream(new File("D://text3.txt")));
vector.addElement(new FileInputStream(new File("D://text4.txt")));

Enumeration<FileInputStream> e = vector.elements();

sequenceInputStream = new SequenceInputStream(e);

FileOutputStream outputStream1 = new FileOutputStream(new File("D://file2.txt"));

//输出流 操作单元以数组形式
//每次读一个字节,缓存到字节数组中,然后返回
byte[] buffer1 = new byte[1024];
int temp = 0 ;
while((temp = sequenceInputStream.read(buffer1)) != -1){
System.out.println((char)temp);
//将字节数组buffer1偏移量0长度为temp的数据写出
outputStream1.write(buffer1, 0, temp);
//强制将缓冲区的数据输出到输出流
outputStream1.flush();
}

sequenceInputStream.close();
outputStream1.close();


ByteArrayInputStream

String str = "welcome to shanghai";

//输出到控制台
PrintStream printStream = new PrintStream(System.out);

ByteArrayInputStream  byteInputStream = new ByteArrayInputStream(str.getBytes());

int index = 0;
//从字节流中一个个字节读取并返回
while((index = byteInputStream.read()) != -1){
printStream.write(index);
}

printStream.close();
byteInputStream.close();


Object(Input/Output)Stream ##

//输出流 将数据写出到流中
TestBean bean = new TestBean();
bean.setName("shanghai");

OutputStream outputStream = new FileOutputStream("object.data");

ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);

objectOutputStream.writeObject(bean);

//输入流 从流中将数据读取
InputStream inputStream = new FileInputStream("object.data");

ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);

TestBean testBean = (TestBean) objectInputStream.readObject();

//输出到控制平台
PrintStream print  = new PrintStream(System.out);

print.print(testBean.getName());

outputStream.close();
objectOutputStream.close();
inputStream.close();
objectInputStream.close();
print.close();


Data(Input/Output)Stream

OutputStream  outputStream = new FileOutputStream("object.data");

DataOutputStream dataOutputStream = new DataOutputStream(outputStream);

TestBean bean = new TestBean();
bean.setName("shanghai");

dataOutputStream.writeUTF(bean.getName());;

InputStream inputStream = new FileInputStream("object.data");

DataInputStream dataInputStream = new DataInputStream(inputStream);

String str = dataInputStream.readUTF();

PrintStream print = new PrintStream(System.out);

print.print(str);

outputStream.close();
dataOutputStream.close();
inputStream.close();
dataInputStream.close();
print.close();


字符流



FileReader reader = new FileReader(new File("D://text1.txt"));
PrintWriter writer = new PrintWriter(System.out);

int index = 0;

char[] chars = new char[512];

while((index = reader.read(chars)) != -1){
writer.write(chars, 0, index);
}

reader.close();
writer.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  io