首先列一个知识点:
字节(Byte) 1Byte = 8 bit
字符(Character) 1 char = 2 byte = 16bit
虽然1 bit才是数据真正的最小单位,但1 bit 的信息量太少了。要表示一个有用的信息,需要好几个bit一起表示。所以除了硬件层面存在1个比特位的寄存器,大多数情况下,字节是数据最小的基本单位。我们熟知的基本型的大小都是8 bit(也就是1字节)的整数倍:
- boolean: 1 byte
- short: 2 byte
- int: 4 byte
- float: 4 byte
- long: 8 byte
- double: 8 byte
一切都是流。
一切都是字节流,其实没有字符流这个东西,字符只是根据编码集对字节流翻译之后的产物。
Java的I/O编码系统。
1. 面向字节流的InputStream和OutputStream。
2. 面向字符的Reader和Writer。
步骤,
1. 创建流对象。
2. 调用write方法, 把数据写入文件。
3. 释放资源。
下面是一个例子,
这是Student的封装类。
import java.io.Serializable;
public class Student implements Serializable {
private String name;
private Integer age;
private Integer score;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
public Student(String name, Integer age, Integer score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
}
这是写入txt文件的。
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
public class WriteStudent {
public static void main(String[] args) {
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("studentdemo1.txt"));
Student student = new Student("王二",19,425);
oos.writeObject(student);
} catch (IOException e) {
e.printStackTrace();
}
}
}
读取:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class readStudent {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("object.txt")));
Student student =(Student)ois.readObject();
ois.close();
System.out.println(student);
}
}