Java.io是Java语言进行输入、输出操作的核心包,提供了很多类和接口使得Java程序可以进行文件读写、网络通信等操作。本文将从多个方面对Java.io核心操作进行详细的阐述。
一、文件读写操作
Java.io提供了很多类和接口来进行文件读写操作,这里介绍一下File类和FileInputStream/FileOutputStream类。
File类代表文件或目录的抽象表示,可以对文件或目录进行创建、删除、重命名、读写等操作。
//创建一个File对象
File file = new File("test.txt");
//判断文件是否存在
if (!file.exists()) {
//创建新文件
file.createNewFile();
}
//写入数据
FileOutputStream fos = new FileOutputStream(file);
fos.write("Hello World!".getBytes());
fos.close();
//读取数据
FileInputStream fis = new FileInputStream(file);
byte[] content = new byte[(int)file.length()];
fis.read(content);
System.out.println(new String(content));
fis.close();
FileInputStream和FileOutputStream分别是文件输入流和输出流的抽象类,分别提供了读写字节流的方法。
二、网络通信操作
Java.io还提供了很多类和接口来进行网络通信操作,这里介绍一下Socket和ServerSocket类。
Socket类代表一个客户端套接字,用于与服务器的套接字进行通信。
//创建客户端Socket,向服务器发送数据
Socket socket = new Socket("127.0.0.1", 8080);
OutputStream os = socket.getOutputStream();
os.write("Hello Server!".getBytes());
os.close();
socket.close();
//创建服务器Socket,等待客户端连接
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("Waiting for client connection...");
Socket clientSocket = serverSocket.accept();
//读取客户端发来的信息
InputStream is = clientSocket.getInputStream();
byte[] content = new byte[1024];
int len = is.read(content);
System.out.println(new String(content, 0, len));
is.close();
clientSocket.close();
serverSocket.close();
ServerSocket类是服务器套接字,用于等待客户端的连接请求。
三、对象序列化操作
Java.io还提供了对象序列化和反序列化的支持,使得Java程序可以对对象进行持久化存储。
实现序列化的类需要实现Serializable接口,然后就可以使用ObjectOutputStream将对象序列化到文件或网络中,使用ObjectInputStream将对象反序列化。
//序列化对象
Person person = new Person("Tom", 18);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"));
oos.writeObject(person);
oos.close();
//反序列化对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"));
person = (Person)ois.readObject();
System.out.println(person.getName() + " " + person.getAge());
ois.close();
//定义一个Person类并实现Serializable接口
public class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//getter and setter
}
四、结语
Java.io是Java程序中进行文件读写、网络通信以及对象序列化等操作的重要核心包,本文对其进行了详细的阐述。实际应用中,我们可以根据具体的需求选择合适的类或接口进行使用。
原创文章,作者:SMLI,如若转载,请注明出处:https://www.506064.com/n/138978.html