0

我一直在试图弄清楚如何解析文本文件。如果文本文件不是特定格式,则不打印内容。

第一行应以 S 开头,每一行都是以下形式之一

S:x

V:x

五:xxx

其中 x 可以是任何大写字母、0、1 或 e。

这是我的代码:

import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;

class myjFileChooser {

 public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            final JFrame f = new JFrame("Document Viewer");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            final JFileChooser fileChooser = new JFileChooser();

            JPanel gui = new JPanel(new BorderLayout());

            final JEditorPane document = new JEditorPane();
            gui.add(new JScrollPane(document), BorderLayout.CENTER);

            JButton open = new JButton("Open");
            open.addActionListener( new ActionListener() {
                public void actionPerformed(ActionEvent ae) {
                    int result = fileChooser.showOpenDialog(f);
                    if (result==JFileChooser.APPROVE_OPTION) {
                        File file = fileChooser.getSelectedFile();
                        try {
                            document.setPage(file.toURI().toURL());
                        } catch(Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
            gui.add(open, BorderLayout.NORTH);

            f.setContentPane(gui);
            f.pack();
            f.setSize(400,300);
            f.setLocationByPlatform(true);

            f.setVisible(true);
        }
    });
   }
 }
4

1 回答 1

0

我建议将您的要求分成几个部分。

首先编写一个程序boolean checkFormat(String line),它获取一行文本作为输入,true如果它满足所需的格式则返回。

其次逐行读取文件。checkFormat()通过调用您的程序检查每一行,其格式是否正常。如果没有,那么你就完成了,你不必打印任何东西。

第三,如果所有行检查都正常,则第二次逐行读取文件并打印每一行。

这是一个逐行读取文本文件的示例:http ://rosettacode.org/wiki/Read_a_file_line_by_line#Java

于 2012-10-16T15:37:46.493 回答