java输入输出流学习
InputStream 是 Java 所有字节输入流类的父类,OutputStream 是 Java 所有字节输出流类的父类,它们都是一个抽象类,因此继承它们的子类要重新定义父类中的抽象方法
常用子类
InputStream(字节输入流) 常用子类
- ByteArrayInputStream 类:将字节数组转换为字节输入流,从中读取字节。 FileInputStream
- FileInputStream类:从文件中读取数据。
- PipedInputStream 类:连接到一个 PipedOutputStream(管道输出流)
- SequenceInputStream 类:将多个字节输入流串联成一个字节输入流
- ObjectInputStream类:将对象反序列化。
OutputStream(字节输出流) 常用子类
- ByteArrayOutputStream 类:向内存缓冲区的字节数组中写数据。
- FileOutputStream 类:向文件中写数据。
- PipedOutputStream 类:连接到一个 PipedlntputStream(管道输入流)。
- ObjectOutputStream 类:将对象序列化。
文件输入输出流测试
新建一个测试类Person
package test;
import java.io.Serializable;
public class Person implements Serializable{
public String name;
public int year;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}
将类对象输出到文件
package test;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class output {
public static void main(String[] args) throws IOException {
Person person = new Person();
person.setName("sk1y");
person.setYear(1);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("a.bin"));
objectOutputStream.writeObject(person);
objectOutputStream.close();
}
}
将类对象从文件中取出
package test;
import java.io.*;
public class input {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("a.bin"));
Person person =(Person) objectInputStream.readObject();
System.out.println(objectInputStream);
System.out.println(person.getName());
System.out.println(person.getYear());
}
}
字节数组输入输出测试
字节数组输入流
package test;
import java.io.ByteArrayInputStream;
public class byteinput {
public static void main(String[] args){
byte[] a = new byte[]{1,2,3,4};
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(a);
int i = byteArrayInputStream.read();
while ( i != -1){
System.out.println(i);
i = byteArrayInputStream.read();
}
}
}
字节数组输出流
byte[] toByteArray():以字节数组的形式返回输出流中的当前内容。
package test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;
public class byteoutput {
public static void main(String[] args) throws IOException {
byte[] bytes = {2, 3, 4, 5, 6, 70,1};
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byteArrayOutputStream.write(bytes);
System.out.println("字节数组的大小为"+ byteArrayOutputStream.size() + "个字节");
byte[] bytes1 = byteArrayOutputStream.toByteArray();
System.out.println(Arrays.toString(bytes1));
}
}
|