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/zh-tw/n/138978.html