解析文本文件,如果内容是特定格式打印它

时间:2012-10-15 15:01:23

标签: java

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

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

S:X

N:X

N: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);
        }
    });
   }
 }

1 个答案:

答案 0 :(得分:0)

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

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

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

第三,如果所有行检查都没问题,那么第二次逐行读取文件并打印每一行。

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