C語言中文網 目錄

Java保存圖書信息

在本章《Java字節流的使用》和《Java字符流的使用》中已經詳細介紹了字節、字符輸入/輸出流的應用,利用輸出流我們可以將一些數據保存到磁盤文件中,利用輸入流可以讀取磁盤文件中的內容。本節將綜合使用文件輸入/輸出流完成存儲圖書并將圖書信息再讀取出來的功能。

每到學校開學季都會新進一批圖書教材,需要將這些圖書信息保存到文件,再將它們打印出來方便老師查看。下面編寫程序,使用文件輸入/輸出流完成圖書信息的存儲和讀取功能,具體的實現步驟如下。

(1) 創建 Book 類,在該類中包含 no、name 和 price 3 個屬性,分別表示圖書編號、圖書名稱和圖書單價。同時還包含兩個方法 write() 和 read(),分別用于將圖書信息寫入到磁盤文件中和從磁盤文件中讀取圖書信息并打印到控制臺。

此外,在 Product 類中包含有該類的 toString() 方法和帶有 3 個參數的構造方法,具體的內容如下:
package ch13;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
public class Book
{
    private int no;    //編號
    private String name;    //名稱
    private double price;    //單價
    public Book(int no,String name,double price)
    {
        this.no=no;
        this.name=name;
        this.price=price;
    }
    public String toString()
    {
        return "圖書編號:"+this.no+",圖書名稱:"+this.name+",圖書單價:"+this.price+"\n";
    }
    public static void write(List books)
    {
        FileWriter fw=null;
        try
        {
            fw=new FileWriter("E:\\myjava\\books.txt");    //創建FileWriter對象
            for(int i=0;i<books.size();i++)
            {
                fw.write(books.get(i).toString());    //循環寫入
            }
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
        finally
        {
            try
            {
                fw.close();
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
        }
    }
    public static void read()
    {
        FileReader fr=null;
        BufferedReader br=null;
        try
        {
            fr=new FileReader("E:\\myjava\\books.txt");
            br=new BufferedReader(fr);    //創建BufferedReader對象
            String str="";
            while((str=br.readLine())!=null)
            {    //循環讀取每行數據
                System.out.println(str);    //輸出讀取的內容
            }           
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
        finally
        {
            try
            {
                br.close();
                fr.close();
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
        }
    }
}

如上述代碼,分別使用字符文件輸出流 FileWriter 和字符緩沖區輸入流 BufferedReader 完成對圖書信息的存儲和讀取功能。

(2) 編寫測試類 Test14,創建兩個 Book 對象,并將這兩個對象保存到 List 集合中,再將 List 集合對象傳遞給 Book 類中的 write() 方法,向 F:\product.txt 文件中寫入圖書信息。最后調用 Product 類中的 read() 方法讀取該文件內容,代碼如下:
package ch13;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test14
{
    public static void main(String[] args)
    {
        Book book1=new Book(1001,"Java學習入門手冊",49);
        Book book2=new Book(1002,"Java編程100例",29);
        List books=new ArrayList();
        books.add(book1);
        books.add(book2);
        Book.write(books);
        System.out.println("********************圖書信息******************");
        Book.read();
    }
}

(3) 運行程序,輸出的圖書信息,如下所示。打開 E:\myjava\books.txt 文件,該文件的內容如圖 1 所示。
********************圖書信息******************
圖書編號:1001,圖書名稱:Java學習入門手冊,圖書單價:49.0
圖書編號:1002,圖書名稱:Java編程100例,圖書單價:29.0


圖1 文件保存的圖書信息

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户