e có 2 class
package controller;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import model.Book;
import model.BookReaderManagerment;
import model.Reader;
public class DataController {
private FileWriter fileWriter;//mo file
private BufferedWriter bufferedWriter;//tao bo dem cho chuoi trong file
private PrintWriter printWriter;//ghi file
private Scanner scanner;//doc file
//open file
public void openFileToWriter(String fileName){
try {
fileWriter = new FileWriter(fileName, true);
bufferedWriter = new BufferedWriter(fileWriter);
printWriter = new PrintWriter(bufferedWriter);
} catch (IOException e){
e.printStackTrace();
}
}
//write file book
public void writeBookToFile(Book book, String fileName){
openFileToWriter(fileName); //mo file
printWriter.println(book.getBookID()+"-"+book.getBookName()+"-"+book.getAuthor()+"-"+book.getSpecialization()
+"-"+book.getPublishYear()+"-"+book.getQuantity()); //ghi file book
closeBookAfterWrite(fileName); //dong file
}
//writer file reader
public void witeReaderToFile(Reader reader, String fileName){
openFileToWriter(fileName); //mo file
printWriter.println(reader.getReaderID()+"-"+reader.getFullName()+"-"+reader.getAddress()+"-"+reader.getPhoneNumber()); //ghi file reader
closeBookAfterWrite(fileName); //dong file
}
//writer file BRM
void witeBRMToFile(BookReaderManagerment brm, String fileName){
openFileToWriter(fileName); //mo file
printWriter.println(brm.getReader().getReaderID()+"-"+brm.getBook().getBookID()+"-"+brm.getNumOfBorrow()+"-"+brm.getState()); //ghi file brm
closeBookAfterWrite(fileName); //dong file
}
//close file
void closeBookAfterWrite(String fileName){
try {
printWriter.close();
bufferedWriter.close();
fileWriter.close();
} catch (IOException e){
e.printStackTrace();
}
}
}
và
package view;
import model.Book;
import controller.DataController;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Scanner;
public class View {
public static void main(String[] args) {
int choice = 0; //biến chọn
String booksFileName = "BOOK.txt"; //tên file lưu sách
DataController controller = new DataController(); //tạo đối tượng để truy cập DataController
Book books = null; //danh sách các sách
Scanner scanner; //tạo đối tượng để nhập
scanner = new Scanner(System.in);
// menu
do {
System.out.println("____________MENU____________");
System.out.println("1. Thêm một đầu sách vào file");
System.out.println("2. Hiển thị danh sách các sách có trong file");
System.out.println("0. Thoát khỏi ứng dụng");
System.out.println("Bạn chọn ?");
choice = scanner.nextInt();//chọn menu 1 hay 2 hay 0
scanner.nextLine();//đọc bỏ dòng chứa lựa chọn
switch (choice) {
case 0: //nếu chọn 0
System.out.println("Cảm ơn bạn đã sử dụng ứng dụng của tôi");
break; //thoát ứng dụng
case 1:
String[] specs = {"Science", "Art", "Econonic", "It"}; //tạo danh sách phân loại: Khoa học, nghệ thuật, kinh tế, công nghệ thông tin
String bookName, author, spec;
int year, quan, sp; //sp = biến phân loại
System.out.println("Nhập tên sách: ");
bookName = scanner.nextLine();
System.out.println("Nhập tên tác giả");
author = scanner.nextLine();
do {
System.out.println("Nhập thể loại sách");
System.out.println("1. Science. \n2. Art. \n3. Econonic. \n4. It.");
sp = scanner.nextInt();
} while (sp < 1 || sp > 4);
spec = specs[sp - 1]; //lấy giá trị trong mảng phân loại gán cho biến spec = thể loại
System.out.println("Nhập năm xuất bản");
year = scanner.nextInt();
System.out.println("nhập số lượng: ");
quan = scanner.nextInt();
Book book = new Book(0, bookName, author, spec, year, quan);
controller.writeBookToFile(books, booksFileName);
break;
}
}while (choice != 0);
}
}
khi e build class view thì nó xuất hiện cho e nhập thông tin như sau:
____________MENU____________
1. Thêm một đầu sách vào file
2. Hiển thị danh sách các sách có trong file
0. Thoát khỏi ứng dụng
Bạn chọn ?
1
Nhập tên sách:
dád
Nhập tên tác giả
sdasd
Nhập thể loại sách
1. Science.
2. Art.
3. Econonic.
4. It.
1
Nhập năm xuất bản
2665
nhập số lượng:
2
sau khi nhập xong thì đến công đoạn ghi file nó báo lỗi:
Exception in thread "main" java.lang.NullPointerException
at controller.DataController.writeBookToFile(DataController.java:32)
at view.View.main(View.java:62)
mọi người chỉ e xử lý lỗi này với. e cảm ơn!