📅  最后修改于: 2023-12-03 15:16:02.420000             🧑  作者: Mango
Java.io是Java中的IO包,用于和文件、流进行交互。在Java.io中,提供了许多接口(interfaces)用于定义各种输入输出对象的各种操作。本文将会介绍Java.io.Interfaces的主要接口及其用途。
Serializable接口是Java中最常用的接口之一,用于标识一个对象可以被序列化。当一个类实现了Serializable接口,意味着该类的对象可以被序列化并在网络上或磁盘上进行传输和存储。实现Serializable接口的类必须保证其所有非静态成员变量必须也是可序列化的。
示例代码:
public class Employee implements Serializable {
public String name;
public String address;
public transient int SSN;
public int number;
}
在上述代码中,Employee类实现了Serializable接口,并声明了四个成员变量。其中,SSN(社会保险号)使用了关键字transient,表示在对象进行序列化时忽略该成员变量。
Closeable接口是Java.io中的另一个常用接口,是所有需要关闭的资源对象的父接口。当一个类实现了Closeable接口,意味着该类的对象需要进行关闭操作。Closeable接口中定义了一个close()方法,用于关闭当前对象。
示例代码:
public class FileReaderTest {
public static void main(String args[]) {
FileReader fr = null;
try {
fr = new FileReader("FileReaderTest.txt");
int c;
while ((c = fr.read()) != -1) {
System.out.print((char)c);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fr != null) {
fr.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
在上述代码中,FileReaderTest类实现了创建FileReader对象并读取文件的功能。在finally块中,我们使用了close()方法关闭了FileReader对象。
Flushable接口表示该对象可以被刷新,即强制将数据写入底层数据流中。Flushable接口中定义了一个flush()方法,用于刷新当前对象。
示例代码:
OutputStream os = new FileOutputStream("file.txt");
os.write("Hello, world!".getBytes());
os.flush(); //刷新输出缓冲区到文件中
os.close(); //关闭文件输出流
在上述代码中,我们创建了一个文件输出流,并使用write()方法向其输出数据。在使用文件输出流操作结束后,我们调用了flush()方法刷新输出缓冲区,使其所有数据都被强制输出到文件中。
Appendable接口主要用于表示该对象可以被追加。Appendable接口中定义了一个append()方法,用于将指定字符或字符序列追加到该对象中。
示例代码:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", world!");
System.out.println(sb.toString());
在上述代码中,我们创建了一个StringBuilder对象,并使用append()方法追加了一段字符序列。最后,我们使用toString()方法将Builder对象转化为字符串并输出。
DataInput和DataOutput接口分别用于读取和写入基本数据类型(如int、boolean、double等)的序列化数据。这两个接口中定义了一些读写基本类型数据的方法,比如writeInt()和readInt()等。
示例代码:
DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.bin"));
dos.writeInt(42);
dos.flush();
dos.close();
在上述代码中,我们使用DataOutputStream类的writeInt()方法向输出流中写入一个整数值42。最后,我们使用flush()方法刷新输出缓冲区并关闭文件输出流。
以上是Java.io.Interfaces中的一些常用接口介绍,希望对读者有所帮助。