您的位置: 网站首页 > 程序开发 > Java程序设计 > 第11章 输入/输出流和文件操作 > 【11.6 上 机 实 验】

11.6 上 机 实 验

 

11.6 

编写一个简单的文本文件浏览工具,不允许用户修改文件。可以使用readFile( )方法每次从文件中读取一行文本,然后添加到TextArea中。当所有的文本都读到TextArea中以后,要把光标放到TextArea的头部。在actionPerformed( )方法中,当用户选择打开文件时,创建一个模式为LOAD的标准FileDialog对话框,根据该对话框中选定的文件,通过getFile( )getDirectory( )方法构造一个完整的文件名,最后在该文件存在的情况下,用readFile( )读取文件中的文本。程序的完整代码如下。

/** TextViewer.java @author ZDS

 * 2007-2-19 下午22:38:15 */

packagechap11;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

/** 简单文本浏览工具*/

publicclass TextViewer extends Frame implements ActionListener {

    private Menu fileMenu = new Menu("File");

    private MenuItem fileOpen = new MenuItem("Open");

    private MenuItem fileExit = new MenuItem("Exit");

    private TextArea text = new TextArea();

    public TextViewer() {

        super("Text Viewer");

        fileMenu.add(fileOpen);

        fileOpen.addActionListener(this);

        fileMenu.addSeparator();

        fileMenu.add(fileExit);

        fileExit.addActionListener(this);

        MenuBar menu = new MenuBar();

        menu.add(fileMenu);

        setMenuBar(menu);

        setLayout(new BorderLayout());

        add("Center", text);

        text.setEditable(false);

        setSize(400, 400);

        setVisible(true);

    }

    public void readFile(String file) {

        text.setText("");

        try {

            BufferedReader in = new BufferedReader(new FileReader(file));

            String line;

            while ((line = in.readLine()) != null)

                text.append(line + "\n");

            in.close();

            text.setCaretPosition(0);

        } catch (IOException ioe) {

            System.err.println(ioe);

        }

    }

    public void actionPerformed(ActionEvent ae) {

        if (ae.getSource() == fileExit)

            System.exit(0);

        else if (ae.getSource() == fileOpen) {

            FileDialog fd = new FileDialog(this, "Open File", FileDialog.

LOAD);

            fd.setVisible(true);

            if (fd.getFile() != null) {

                File file = new File(fd.getDirectory() + fd.getFile());

                if (file.exists())

                    readFile(file.toString());

                else

                    text.setText("File name: " + file + " invalid.");

            }

            fd.dispose();

        }

    }

    public static void main(String args[]) {

        TextViewer editor = new TextViewer();

        editor.addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {

                System.exit(0);

            }

        });

    }

}