Java利用文件构建用户电话号码本
1. 简介
电话号码本是一个存储电话号码和相关信息的工具。Java提供了丰富的API和功能,使我们能够轻松地使用文件来构建和管理电话号码本。本文将介绍如何使用Java进行电话号码本的增加、删除、查询和修改操作,并按照指定属性排序和查询。
2. 创建电话号码本类
首先,我们需要创建一个电话号码本类来管理用户的电话号码和相关信息。我们可以使用一个文件来存储这些信息,每行表示一个用户的电话号码和信息。下面是电话号码本类的代码示例:
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class PhoneBook {
private String fileName;
public PhoneBook(String fileName) {
this.fileName = fileName;
}
public void addPhone(String phoneNumber, String info) {
try {
FileWriter fileWriter = new FileWriter(fileName, true);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(phoneNumber + "," + info);
bufferedWriter.newLine();
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void deletePhone(String phoneNumber) {
try {
File inputFile = new File(fileName);
File tempFile = new File("temp.txt");
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String currentLine;
while ((currentLine = reader.readLine()) != null) {
if (currentLine.startsWith(phoneNumber + ",")) continue;
writer.write(currentLine + System.getProperty("line.separator"));
}
writer.close();
reader.close();
inputFile.delete();
tempFile.renameTo(inputFile);
} catch (IOException e) {
e.printStackTrace();
}
}
public List<String> searchPhone(String keyword) {
List<String> result = new ArrayList<>();
try {
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String currentLine;
while ((currentLine = reader.readLine()) != null) {
if (currentLine.contains(keyword)) {
result.add(currentLine);
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public void modifyPhone(String phoneNumber, String newInfo) {
try {
File inputFile = new File(fileName);
File tempFile = new File("temp.txt");
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String currentLine;
while ((currentLine = reader.readLine()) != null) {
if (currentLine.startsWith(phoneNumber + ",")) {
writer.write(phoneNumber + "," + newInfo);
} else {
writer.write(currentLine);
}
writer.newLine();
}
writer.close();
reader.close();
inputFile.delete();
tempFile.renameTo(inputFile);
} catch (IOException e) {
e.printStackTrace();
}
}
public void sortPhoneBook() {
List<String> phoneNumbers = new ArrayList<>();
try {
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String currentLine;
while ((currentLine = reader.readLine()) != null) {
phoneNumbers.add(currentLine);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
Collections.sort(phoneNumbers, Comparator.comparing(s -> s.split(",")[1]));
try {
FileWriter fileWriter = new FileWriter(fileName);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
for (String phoneNumber : phoneNumbers) {
bufferedWriter.write(phoneNumber);
bufferedWriter.newLine();
}
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. 使用电话号码本类
使用电话号码本类很简单。我们可以通过创建一个实例来调用它的方法,如下所示:
public class Main {
public static void main(String[] args) {
PhoneBook phoneBook = new PhoneBook("phonebook.txt");
// 添加电话号码
phoneBook.addPhone("1234567890", "John Doe");
phoneBook.addPhone("2345678901", "Jane Smith");
// 删除电话号码
phoneBook.deletePhone("1234567890");
// 查询电话号码
List<String> searchResult = phoneBook.searchPhone("Jane");
for (String result : searchResult) {
System.out.println(result);
}
// 修改电话号码信息
phoneBook.modifyPhone("2345678901", "Jane Smith, Address: 123 Main St");
// 按属性排序电话号码本
phoneBook.sortPhoneBook();
}
}
4. 总结
在本文中,我们介绍了如何使用Java利用文件构